diff --git a/bower.json b/bower.json index f30db9613..ff3ece9cd 100644 --- a/bower.json +++ b/bower.json @@ -10,10 +10,13 @@ }, "main": "./build/angular-translate", "dependencies": { - "angular": "1.0.7" + "angular": "1.0.7", + "angular-mocks": "1.0.7", + "ngMidwayTester": "yearofmoo/ngMidwayTester#*", + "angular-translate-interpolation-default": "~0.1.0" }, "devDependencies": { "angular-mocks": "1.0.7", "ngMidwayTester": "yearofmoo/ngMidwayTester" } -} +} \ No newline at end of file diff --git a/karma.midway.conf.js b/karma.midway.conf.js index d3b821b57..6a373a774 100644 --- a/karma.midway.conf.js +++ b/karma.midway.conf.js @@ -13,6 +13,7 @@ files = [ 'bower_components/angular/angular.js', 'bower_components/ngMidwayTester/Source/ngMidwayTester.js', 'src/translate.js', + 'bower_components/angular-translate-interpolation-default/angular-translate-interpolation-default.js', 'src/**/*.js', 'test/midway/**/*Spec.js' ]; diff --git a/karma.unit.conf.js b/karma.unit.conf.js index 7dd3641d0..1a354e78c 100644 --- a/karma.unit.conf.js +++ b/karma.unit.conf.js @@ -13,6 +13,7 @@ files = [ 'bower_components/angular/angular.js', 'bower_components/angular-mocks/angular-mocks.js', 'src/translate.js', + 'bower_components/angular-translate-interpolation-default/angular-translate-interpolation-default.js', 'src/**/*.js', 'test/unit/**/*Spec.js' ]; diff --git a/src/translate.js b/src/translate.js index 45d08093d..2c6048ae8 100644 --- a/src/translate.js +++ b/src/translate.js @@ -45,6 +45,7 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY', $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, + $interpolationFactory, $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, @@ -146,6 +147,10 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY', this.translations = translations; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + }; + /** * @ngdoc function * @name pascalprecht.translate.$translateProvider#preferredLanguage @@ -465,14 +470,14 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY', * @param {object=} interpolateParams An object hash for dynamic values */ this.$get = [ - '$interpolate', '$log', '$injector', '$rootScope', '$q', - function ($interpolate, $log, $injector, $rootScope, $q) { + function ($log, $injector, $rootScope, $q) { var Storage, + interpolate = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false; if ($storageFactory) { @@ -487,20 +492,21 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY', var table = $uses ? $translationTable[$uses] : $translationTable; if (table && table.hasOwnProperty(translationId)) { - return $interpolate(table[translationId])(interpolateParams); - } - - if ($missingTranslationHandlerFactory && !pendingLoader) { - $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + return interpolate(table[translationId], interpolateParams); } if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage){ var translation = $translationTable[$fallbackLanguage][translationId]; if (translation) { - return $interpolate(translation)(interpolateParams); + return interpolate(translation, interpolateParams); } } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + + if ($notFoundIndicatorLeft) { translationId = [$notFoundIndicatorLeft, translationId].join(' '); }