Selaa lähdekoodia

AMBARI-14481. Ambari Admin: string constants used in controllers, directives and services should be defined once (alexantonenko)

Alex Antonenko 9 vuotta sitten
vanhempi
commit
764fda9aba
23 muutettua tiedostoa jossa 478 lisäystä ja 134 poistoa
  1. 11 5
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
  2. 8 7
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
  3. 22 13
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
  4. 4 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
  5. 4 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
  6. 13 12
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
  7. 4 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
  8. 14 5
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
  9. 6 5
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
  10. 6 5
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
  11. 6 8
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
  12. 22 8
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
  13. 3 2
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
  14. 7 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
  15. 7 6
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
  16. 37 18
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
  17. 4 4
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js
  18. 274 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
  19. 1 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js
  20. 5 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js
  21. 16 15
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
  22. 1 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js
  23. 3 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js

+ 11 - 5
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('NavbarCtrl',['$scope', 'Cluster', '$location', 'Alert', 'ROUTES', 'ConfirmationModal', '$rootScope', 'Stack', function($scope, Cluster, $location, Alert, ROUTES, ConfirmationModal, $rootScope, Stack) {
+.controller('NavbarCtrl',['$scope', 'Cluster', '$location', 'Alert', 'ROUTES', 'ConfirmationModal', '$rootScope', 'Stack', '$translate', function($scope, Cluster, $location, Alert, ROUTES, ConfirmationModal, $rootScope, Stack, $translate) {
+  var $t = $translate.instant;
   $scope.cluster = null;
   $scope.cluster = null;
   $scope.totalRepos = 0;
   $scope.totalRepos = 0;
   $scope.editCluster = {
   $scope.editCluster = {
@@ -40,7 +41,7 @@ angular.module('ambariAdminConsole')
         setTimeout(loadClusterData, 1000);
         setTimeout(loadClusterData, 1000);
       }
       }
     }).catch(function (data) {
     }).catch(function (data) {
-      Alert.error('Cannot load cluster status', data.statusText);
+      Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
     });
     });
   }
   }
   loadClusterData();
   loadClusterData();
@@ -56,7 +57,12 @@ angular.module('ambariAdminConsole')
   };
   };
 
 
   $scope.confirmClusterNameChange = function() {
   $scope.confirmClusterNameChange = function() {
-    ConfirmationModal.show('Confirm Cluster Name Change', 'Are you sure you want to change the cluster name to ' + $scope.editCluster.name + '?')
+    ConfirmationModal.show(
+      $t('common.clusterNameChangeConfirmation.title'),
+      $t('common.clusterNameChangeConfirmation.message', {
+        clusterName: $scope.editCluster.name
+      })
+    )
       .then(function() {
       .then(function() {
         $scope.saveClusterName();
         $scope.saveClusterName();
       }).catch(function() {
       }).catch(function() {
@@ -71,9 +77,9 @@ angular.module('ambariAdminConsole')
 
 
     Cluster.editName(oldClusterName, newClusterName).then(function(data) {
     Cluster.editName(oldClusterName, newClusterName).then(function(data) {
       $scope.cluster.Clusters.cluster_name = newClusterName;
       $scope.cluster.Clusters.cluster_name = newClusterName;
-      Alert.success('The cluster has been renamed to ' + newClusterName + '.');
+      Alert.success($t('common.alerts.clusterRenamed', {clusterName: newClusterName}));
     }).catch(function(data) {
     }).catch(function(data) {
-      Alert.error('Cannot rename cluster to ' + newClusterName, data.data.message);
+      Alert.error($t('common.alerts.cannotRenameCluster', {clusterName: newClusterName}), data.data.message);
     });
     });
 
 
     $scope.toggleEditName();
     $scope.toggleEditName();

+ 8 - 7
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('CreateViewInstanceCtrl',['$scope', 'View', 'Alert', 'Cluster', '$routeParams', '$location', 'UnsavedDialog', function($scope, View, Alert, Cluster, $routeParams, $location, UnsavedDialog) {
+.controller('CreateViewInstanceCtrl',['$scope', 'View', 'Alert', 'Cluster', '$routeParams', '$location', 'UnsavedDialog', '$translate', function($scope, View, Alert, Cluster, $routeParams, $location, UnsavedDialog, $translate) {
+  var $t = $translate.instant;
   $scope.form = {};
   $scope.form = {};
   var targetUrl = '';
   var targetUrl = '';
 
 
@@ -38,7 +39,7 @@ angular.module('ambariAdminConsole')
       });
       });
 
 
       $scope.clusterConfigurable = viewVersion.ViewVersionInfo.cluster_configurable;
       $scope.clusterConfigurable = viewVersion.ViewVersionInfo.cluster_configurable;
-      $scope.clusterConfigurableErrorMsg = $scope.clusterConfigurable ? "" : "This view cannot use this option";
+      $scope.clusterConfigurableErrorMsg = $scope.clusterConfigurable ? "" : $t('views.alerts.cannotUseOption');
 
 
       $scope.instance = {
       $scope.instance = {
         view_name: viewVersion.ViewVersionInfo.view_name,
         view_name: viewVersion.ViewVersionInfo.view_name,
@@ -72,7 +73,7 @@ angular.module('ambariAdminConsole')
           $scope.form.instanceCreateForm[key].validationError = false;
           $scope.form.instanceCreateForm[key].validationError = false;
           $scope.form.instanceCreateForm[key].validationMessage = '';
           $scope.form.instanceCreateForm[key].validationMessage = '';
         } catch (e) {
         } catch (e) {
-          console.log('Unable to reset error message for prop:', key);
+          console.log($t('views.alerts.unableToResetErrorMessage', {key: key}));
         }
         }
       });
       });
       $scope.errorKeys = [];
       $scope.errorKeys = [];
@@ -101,7 +102,7 @@ angular.module('ambariAdminConsole')
         $scope.noClusterAvailible = false;
         $scope.noClusterAvailible = false;
         $scope.instance.isLocalCluster = $scope.clusterConfigurable;
         $scope.instance.isLocalCluster = $scope.clusterConfigurable;
       }else{
       }else{
-        $scope.clusters.push("No Clusters");
+        $scope.clusters.push($t('common.noClusters'));
       }
       }
       $scope.cluster = $scope.clusters[0];
       $scope.cluster = $scope.clusters[0];
     });
     });
@@ -127,7 +128,7 @@ angular.module('ambariAdminConsole')
       $scope.instance.clusterName = $scope.cluster;
       $scope.instance.clusterName = $scope.cluster;
       View.createInstance($scope.instance)
       View.createInstance($scope.instance)
         .then(function(data) {
         .then(function(data) {
-          Alert.success('Created View Instance ' + $scope.instance.instance_name);
+          Alert.success($t('views.alerts.instanceCreated', {instanceName: $scope.instance.instance_name}));
           $scope.form.instanceCreateForm.$setPristine();
           $scope.form.instanceCreateForm.$setPristine();
           if( targetUrl ){
           if( targetUrl ){
             $location.path(targetUrl);
             $location.path(targetUrl);
@@ -158,10 +159,10 @@ angular.module('ambariAdminConsole')
                 $scope.form.instanceCreateForm.generalValidationError = errorMessage;
                 $scope.form.instanceCreateForm.generalValidationError = errorMessage;
               }
               }
             } catch (e) {
             } catch (e) {
-              console.error('Unable to parse error message:', data.message);
+              console.error($t('views.alerts.unableToParseError', {message: data.message}));
             }
             }
           }
           }
-          Alert.error('Cannot create instance', errorMessage);
+          Alert.error($t('views.alerts.cannotCreateInstance'), errorMessage);
           $scope.form.instanceCreateForm.isSaving = false;
           $scope.form.instanceCreateForm.isSaving = false;
         });
         });
       }
       }

+ 22 - 13
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('ViewsEditCtrl', ['$scope', '$routeParams' , 'Cluster', 'View', 'Alert', 'PermissionLoader', 'PermissionSaver', 'ConfirmationModal', '$location', 'UnsavedDialog', function($scope, $routeParams, Cluster, View, Alert, PermissionLoader, PermissionSaver, ConfirmationModal, $location, UnsavedDialog) {
+.controller('ViewsEditCtrl', ['$scope', '$routeParams' , 'Cluster', 'View', 'Alert', 'PermissionLoader', 'PermissionSaver', 'ConfirmationModal', '$location', 'UnsavedDialog', '$translate', function($scope, $routeParams, Cluster, View, Alert, PermissionLoader, PermissionSaver, ConfirmationModal, $location, UnsavedDialog, $translate) {
+  var $t = $translate.instant;
   $scope.identity = angular.identity;
   $scope.identity = angular.identity;
   $scope.isConfigurationEmpty = true;
   $scope.isConfigurationEmpty = true;
   $scope.isSettingsEmpty = true;
   $scope.isSettingsEmpty = true;
@@ -47,7 +48,7 @@ angular.module('ambariAdminConsole')
       }
       }
     })
     })
     .catch(function(data) {
     .catch(function(data) {
-      Alert.error('Cannot load instance info', data.data.message);
+      Alert.error($t('views.alerts.cannotLoadInstanceInfo'), data.data.message);
     });
     });
   }
   }
 
 
@@ -57,7 +58,7 @@ angular.module('ambariAdminConsole')
       $scope.cluster = instance.ViewInstanceInfo.cluster_handle;
       $scope.cluster = instance.ViewInstanceInfo.cluster_handle;
     }else{
     }else{
       $scope.isLocalCluster = false;
       $scope.isLocalCluster = false;
-      $scope.cluster = $scope.clusters.length > 0 ? $scope.clusters[0] : "No Clusters";
+      $scope.cluster = $scope.clusters.length > 0 ? $scope.clusters[0] : $t('common.noClusters');
     }
     }
     $scope.originalLocalCluster = $scope.isLocalCluster;
     $scope.originalLocalCluster = $scope.isLocalCluster;
     $scope.isConfigurationEmpty = !$scope.numberOfClusterConfigs;
     $scope.isConfigurationEmpty = !$scope.numberOfClusterConfigs;
@@ -104,7 +105,7 @@ angular.module('ambariAdminConsole')
   View.getMeta($routeParams.viewId, $routeParams.version).then(function(data) {
   View.getMeta($routeParams.viewId, $routeParams.version).then(function(data) {
     $scope.configurationMeta = data.data.ViewVersionInfo.parameters;
     $scope.configurationMeta = data.data.ViewVersionInfo.parameters;
     $scope.clusterConfigurable = data.data.ViewVersionInfo.cluster_configurable;
     $scope.clusterConfigurable = data.data.ViewVersionInfo.cluster_configurable;
-    $scope.clusterConfigurableErrorMsg = $scope.clusterConfigurable ? "" : "This view cannot use this option";
+    $scope.clusterConfigurableErrorMsg = $scope.clusterConfigurable ? "" : $t('views.alerts.cannotUseOption');
     angular.forEach($scope.configurationMeta, function (item) {
     angular.forEach($scope.configurationMeta, function (item) {
       item.displayName = item.name.replace(/\./g, '\.\u200B');
       item.displayName = item.name.replace(/\./g, '\.\u200B');
       item.clusterConfig = !!item.clusterConfig;
       item.clusterConfig = !!item.clusterConfig;
@@ -129,7 +130,7 @@ angular.module('ambariAdminConsole')
       $scope.isPermissionsEmpty = angular.equals({}, $scope.permissions);
       $scope.isPermissionsEmpty = angular.equals({}, $scope.permissions);
     })
     })
     .catch(function(data) {
     .catch(function(data) {
-      Alert.error('Cannot load permissions', data.data.message);
+      Alert.error($t('views.alerts.cannotLoadPermissions'), data.data.message);
     });
     });
   }
   }
 
 
@@ -191,7 +192,7 @@ angular.module('ambariAdminConsole')
       });
       });
       $scope.noClusterAvailible = false;
       $scope.noClusterAvailible = false;
     }else{
     }else{
-      $scope.clusters.push("No Clusters");
+      $scope.clusters.push($t('common.noClusters'));
     }
     }
     $scope.cluster = $scope.clusters[0];
     $scope.cluster = $scope.clusters[0];
   });
   });
@@ -220,7 +221,7 @@ angular.module('ambariAdminConsole')
         }
         }
       })
       })
       .catch(function(data) {
       .catch(function(data) {
-        Alert.error('Cannot save settings', data.data.message);
+        Alert.error($t('views.alerts.cannotSaveSettings'), data.data.message);
       });
       });
     }
     }
   };
   };
@@ -252,7 +253,7 @@ angular.module('ambariAdminConsole')
         }
         }
       })
       })
       .catch(function(data) {
       .catch(function(data) {
-        Alert.error('Cannot save settings', data.data.message);
+        Alert.error($t('views.alerts.cannotSaveSettings'), data.data.message);
       });
       });
     }
     }
   };
   };
@@ -313,10 +314,10 @@ angular.module('ambariAdminConsole')
               }
               }
             });
             });
           } catch (e) {
           } catch (e) {
-            console.error('Unable to parse error message:', data.message);
+            console.error($t('views.alerts.unableToParseError', {message: data.message}));
           }
           }
         }
         }
-        Alert.error('Cannot save properties', errorMessage);
+        Alert.error($t('views.alerts.cannotSaveProperties'), errorMessage);
       });
       });
     }
     }
   };
   };
@@ -347,7 +348,7 @@ angular.module('ambariAdminConsole')
     .then(reloadViewPrivileges)
     .then(reloadViewPrivileges)
     .catch(function(data) {
     .catch(function(data) {
       reloadViewPrivileges();
       reloadViewPrivileges();
-      Alert.error('Cannot save permissions', data.data.message);
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
     });
     });
   };
   };
 
 
@@ -360,13 +361,21 @@ angular.module('ambariAdminConsole')
   }, true);
   }, true);
 
 
   $scope.deleteInstance = function(instance) {
   $scope.deleteInstance = function(instance) {
-    ConfirmationModal.show('Delete View Instance', 'Are you sure you want to delete View Instance '+ instance.ViewInstanceInfo.label +'?').then(function() {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('views.viewInstance')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('views.viewInstance'),
+        instanceName: instance.ViewInstanceInfo.label
+      })
+    ).then(function() {
       View.deleteInstance(instance.ViewInstanceInfo.view_name, instance.ViewInstanceInfo.version, instance.ViewInstanceInfo.instance_name)
       View.deleteInstance(instance.ViewInstanceInfo.view_name, instance.ViewInstanceInfo.version, instance.ViewInstanceInfo.instance_name)
       .then(function() {
       .then(function() {
         $location.path('/views');
         $location.path('/views');
       })
       })
       .catch(function(data) {
       .catch(function(data) {
-        Alert.error('Cannot delete instance', data.data.message);
+        Alert.error($t('views.alerts.cannotDeleteInstance'), data.data.message);
       });
       });
     });
     });
   };
   };

+ 4 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js

@@ -18,8 +18,9 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('ViewsListCtrl',['$scope', 'View', '$modal', 'Alert', 'ConfirmationModal', '$location', function($scope, View, $modal, Alert, ConfirmationModal, $location) {
-  var deferredList = [];
+.controller('ViewsListCtrl',['$scope', 'View', '$modal', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, View, $modal, Alert, ConfirmationModal, $location, $translate) {
+  var deferredList = [],
+    $t = $translate.instant;
   $scope.$on('$locationChangeStart', function() {
   $scope.$on('$locationChangeStart', function() {
     deferredList.forEach(function(def) {
     deferredList.forEach(function(def) {
       def.reject();
       def.reject();
@@ -59,7 +60,7 @@ angular.module('ambariAdminConsole')
         });
         });
       })
       })
     }).catch(function(data) {
     }).catch(function(data) {
-      Alert.error('Cannot load views', data.data.message);
+      Alert.error($t('views.alerts.cannotLoadViews'), data.data.message);
     });
     });
   }
   }
 
 

+ 4 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('ClustersManageAccessCtrl', ['$scope', '$location', 'Cluster', '$routeParams', 'Alert', 'PermissionLoader', 'PermissionSaver', function($scope, $location, Cluster, $routeParams, Alert, PermissionLoader, PermissionSaver) {
+.controller('ClustersManageAccessCtrl', ['$scope', '$location', 'Cluster', '$routeParams', 'Alert', 'PermissionLoader', 'PermissionSaver', '$translate', function($scope, $location, Cluster, $routeParams, Alert, PermissionLoader, PermissionSaver, $translate) {
+  var $t = $translate.instant;
   $scope.identity = angular.identity;
   $scope.identity = angular.identity;
   function reloadClusterData(){
   function reloadClusterData(){
     PermissionLoader.getClusterPermissions({
     PermissionLoader.getClusterPermissions({
@@ -41,7 +42,7 @@ angular.module('ambariAdminConsole')
       $scope.permissions = pms;
       $scope.permissions = pms;
     })
     })
     .catch(function(data) {
     .catch(function(data) {
-      Alert.error('Cannot load cluster data', data.data.message);
+      Alert.error($t('clusters.alerts.cannotLoadClusterData'), data.data.message);
     });
     });
   }
   }
  
  
@@ -68,7 +69,7 @@ angular.module('ambariAdminConsole')
       }
       }
     ).then(reloadClusterData)
     ).then(reloadClusterData)
     .catch(function(data) {
     .catch(function(data) {
-      Alert.error('Cannot save permissions', data.data.message);
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
       reloadClusterData();
       reloadClusterData();
     });
     });
     $scope.isEditMode = false;
     $scope.isEditMode = false;

+ 13 - 12
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js

@@ -18,8 +18,9 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('UserAccessListCtrl',['$scope', '$location', 'Cluster', '$modal', '$rootScope', '$routeParams', 'PermissionSaver', 'Alert',
-function($scope, $location, Cluster, $modal, $rootScope, $routeParams, PermissionSaver, Alert) {
+.controller('UserAccessListCtrl',['$scope', '$location', 'Cluster', '$modal', '$rootScope', '$routeParams', 'PermissionSaver', 'Alert', '$translate',
+function($scope, $location, Cluster, $modal, $rootScope, $routeParams, PermissionSaver, Alert, $translate) {
+  var $t = $translate.instant;
   $scope.users = [];
   $scope.users = [];
   $scope.usersPerPage = 10;
   $scope.usersPerPage = 10;
   $scope.currentPage = 1;
   $scope.currentPage = 1;
@@ -88,7 +89,7 @@ function($scope, $location, Cluster, $modal, $rootScope, $routeParams, Permissio
           $scope.loadUsers();
           $scope.loadUsers();
         })
         })
         .catch(function(data) {
         .catch(function(data) {
-          Alert.error('Cannot save permissions', data.data.message);
+          Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
           $scope.loadUsers();
           $scope.loadUsers();
         });
         });
       }
       }
@@ -102,20 +103,20 @@ function($scope, $location, Cluster, $modal, $rootScope, $routeParams, Permissio
   };
   };
 
 
   $scope.roleFilterOptions = [
   $scope.roleFilterOptions = [
-    {label: 'All', value: ''},
-    {label: 'Cluster User', value: 'CLUSTER.USER'},
-    {label:'Cluster Administrator', value: 'CLUSTER.ADMINISTRATOR'},
-    {label:'Cluster Operator', value: 'CLUSTER.OPERATOR'},
-    {label:'Service Administrator', value: 'SERVICE.ADMINISTRATOR'},
-    {label:'Service Operator', value: 'SERVICE.OPERATOR'}
+    {label: $t('common.all'), value: ''},
+    {label: $t('users.roles.clusterUser'), value: 'CLUSTER.USER'},
+    {label: $t('users.roles.clusterAdministrator'), value: 'CLUSTER.ADMINISTRATOR'},
+    {label: $t('users.roles.clusterOperator'), value: 'CLUSTER.OPERATOR'},
+    {label: $t('users.roles.serviceAdministrator'), value: 'SERVICE.ADMINISTRATOR'},
+    {label: $t('users.roles.serviceOperator'), value: 'SERVICE.OPERATOR'}
   ];
   ];
   $scope.currentRoleFilter = $scope.roleFilterOptions[0];
   $scope.currentRoleFilter = $scope.roleFilterOptions[0];
 
 
 
 
   $scope.typeFilterOptions = [
   $scope.typeFilterOptions = [
-    {label:'All', value:''},
-    {label:'Group', value:'GROUP'},
-    {label:'User', value:'USER'}
+    {label: $t('common.all'), value: ''},
+    {label:$t('common.group'), value: 'GROUP'},
+    {label: $t('common.user'), value: 'USER'}
   ];
   ];
   $scope.currentTypeFilter = $scope.typeFilterOptions[0];
   $scope.currentTypeFilter = $scope.typeFilterOptions[0];
 
 

+ 4 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('GroupsCreateCtrl',['$scope', 'Group', '$location', 'Alert', 'UnsavedDialog', function($scope, Group, $location, Alert, UnsavedDialog) {
+.controller('GroupsCreateCtrl',['$scope', 'Group', '$location', 'Alert', 'UnsavedDialog', '$translate', function($scope, Group, $location, Alert, UnsavedDialog, $translate) {
+  var $t = $translate.instant;
   $scope.group = new Group();
   $scope.group = new Group();
   var targetUrl = '/groups';
   var targetUrl = '/groups';
 
 
@@ -26,12 +27,12 @@ angular.module('ambariAdminConsole')
     $scope.form.submitted = true;
     $scope.form.submitted = true;
     if ($scope.form.$valid){
     if ($scope.form.$valid){
       $scope.group.save().then(function() {
       $scope.group.save().then(function() {
-        Alert.success('Created group <a href="#/groups/' + $scope.group.group_name + '/edit">' + $scope.group.group_name + '</a>');
+        Alert.success($t('groups.alerts.groupCreated', {groupName: $scope.group.group_name}));
         $scope.form.$setPristine();
         $scope.form.$setPristine();
         $location.path(targetUrl);
         $location.path(targetUrl);
       })
       })
       .catch(function(data) {
       .catch(function(data) {
-        Alert.error('Group creation error', data.data.message);
+        Alert.error($t('groups.alerts.groupCreationError'), data.data.message);
       });
       });
     }
     }
   };
   };

+ 14 - 5
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Alert', 'ConfirmationModal', '$location', function($scope, Group, $routeParams, Alert, ConfirmationModal, $location) {
+.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, Group, $routeParams, Alert, ConfirmationModal, $location, $translate) {
+  var $t = $translate.instant;
   $scope.editMode = false;
   $scope.editMode = false;
   $scope.group = new Group($routeParams.id);
   $scope.group = new Group($routeParams.id);
   $scope.group.editingUsers = [];
   $scope.group.editingUsers = [];
@@ -52,7 +53,7 @@ angular.module('ambariAdminConsole')
     );
     );
     $scope.group.members = newMembers;
     $scope.group.members = newMembers;
     $scope.group.saveMembers().catch(function(data) {
     $scope.group.saveMembers().catch(function(data) {
-        Alert.error('Cannot update group members', "<div class='break-word'>" + data.message + "</div>");
+        Alert.error($t('groups.alerts.cannotUpdateGroupMembers'), "<div class='break-word'>" + data.message + "</div>");
       }).finally(function() {
       }).finally(function() {
         loadMembers();
         loadMembers();
       });
       });
@@ -73,7 +74,15 @@ angular.module('ambariAdminConsole')
   });
   });
 
 
   $scope.deleteGroup = function(group) {
   $scope.deleteGroup = function(group) {
-    ConfirmationModal.show('Delete Group', 'Are you sure you want to delete group "'+ group.group_name +'"?').then(function() {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('common.group')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('common.group').toLowerCase(),
+        instanceName: '"' + group.group_name + '"'
+      })
+    ).then(function() {
       group.destroy().then(function() {
       group.destroy().then(function() {
         $location.path('/groups');
         $location.path('/groups');
       }).catch(function() {
       }).catch(function() {
@@ -104,10 +113,10 @@ angular.module('ambariAdminConsole')
 
 
     $scope.privileges = data.data.items.length ? privileges : null;
     $scope.privileges = data.data.items.length ? privileges : null;
     $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
     $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
-    $scope.noViewPriv = $.isEmptyObject(privileges.views)
+    $scope.noViewPriv = $.isEmptyObject(privileges.views);
     $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;    $scope.dataLoaded = true;
     $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;    $scope.dataLoaded = true;
   }).catch(function(data) {
   }).catch(function(data) {
-    Alert.error('Cannot load privileges', data.data.message);
+    Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
   });
   });
 
 
 
 

+ 6 - 5
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('GroupsListCtrl',['$scope', 'Group', '$modal', 'ConfirmationModal', '$rootScope', function($scope, Group, $modal, ConfirmationModal, $rootScope) {
+.controller('GroupsListCtrl',['$scope', 'Group', '$modal', 'ConfirmationModal', '$rootScope', '$translate', function($scope, Group, $modal, ConfirmationModal, $rootScope, $translate) {
+  var $t = $translate.instant;
   $scope.groups = [];
   $scope.groups = [];
 
 
   $scope.groupsPerPage = 10;
   $scope.groupsPerPage = 10;
@@ -50,14 +51,14 @@ angular.module('ambariAdminConsole')
       $scope.groups = groups;
       $scope.groups = groups;
     })
     })
     .catch(function(data) {
     .catch(function(data) {
-      console.error('Get groups list error');
+      console.error($t('groups.alerts.getGroupsListError'));
     });
     });
   }
   }
 
 
   $scope.typeFilterOptions = [
   $scope.typeFilterOptions = [
-    {label:'All', value:'*'},
-    {label:'Local', value: false},
-    {label:'LDAP', value:true}
+    {label: $t('common.all'), value:'*'},
+    {label: $t('common.local'), value: false},
+    {label: $t('common.ldap'), value:true}
   ];
   ];
   $scope.currentTypeFilter = $scope.typeFilterOptions[0];
   $scope.currentTypeFilter = $scope.typeFilterOptions[0];
   
   

+ 6 - 5
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('MainCtrl',['$scope','$rootScope','$window','Auth', 'Alert', '$modal', 'Cluster', 'View', function($scope, $rootScope, $window, Auth, Alert, $modal, Cluster, View) {
+.controller('MainCtrl',['$scope','$rootScope','$window','Auth', 'Alert', '$modal', 'Cluster', 'View', '$translate', function($scope, $rootScope, $window, Auth, Alert, $modal, Cluster, View, $translate) {
+  var $t = $translate.instant;
   $scope.signOut = function() {
   $scope.signOut = function() {
     Auth.signout().finally(function() {
     Auth.signout().finally(function() {
       $window.location.pathname = '';
       $window.location.pathname = '';
@@ -59,7 +60,7 @@ angular.module('ambariAdminConsole')
         setTimeout(loadClusterData, 1000);
         setTimeout(loadClusterData, 1000);
       }
       }
     }).catch(function(data) {
     }).catch(function(data) {
-      Alert.error('Cannot load cluster status', data.statusText);
+      Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
     });
     });
   }
   }
   loadClusterData();
   loadClusterData();
@@ -111,9 +112,9 @@ angular.module('ambariAdminConsole')
           backdrop: false,
           backdrop: false,
           controller: ['$scope', 'Auth', function($scope, Auth) {
           controller: ['$scope', 'Auth', function($scope, Auth) {
             $scope.remainTime = 60;
             $scope.remainTime = 60;
-            $scope.title = 'Automatic Logout';
-            $scope.primaryText = 'Remain Logged In';
-            $scope.secondaryText = 'Log Out Now';
+            $scope.title = $t('main.autoLogOut');
+            $scope.primaryText = $t('main.controls.remainLoggedIn');
+            $scope.secondaryText = $t('main.controls.logOut');
             $scope.remain = function() {
             $scope.remain = function() {
               $rootScope.timeoutModal.close();
               $rootScope.timeoutModal.close();
               delete $rootScope.timeoutModal;
               delete $rootScope.timeoutModal;

+ 6 - 8
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('StackVersionsCreateCtrl', ['$scope', 'Stack', '$routeParams', '$location', 'Alert', function($scope, Stack, $routeParams, $location, Alert) {
+.controller('StackVersionsCreateCtrl', ['$scope', 'Stack', '$routeParams', '$location', 'Alert', '$translate', function($scope, Stack, $routeParams, $location, Alert, $translate) {
+  var $t = $translate.instant;
   $scope.createController = true;
   $scope.createController = true;
   $scope.osList = [];
   $scope.osList = [];
   $scope.skipValidation = false;
   $scope.skipValidation = false;
@@ -45,7 +46,7 @@ angular.module('ambariAdminConsole')
       $scope.afterStackVersionChange();
       $scope.afterStackVersionChange();
     })
     })
     .catch(function (data) {
     .catch(function (data) {
-      Alert.error('Fetch stack version filter list error', data.message);
+      Alert.error($t('versions.alerts.filterListError'), data.message);
     });
     });
   };
   };
   $scope.fetchStackVersionFilterList();
   $scope.fetchStackVersionFilterList();
@@ -57,14 +58,11 @@ angular.module('ambariAdminConsole')
           .success(function () {
           .success(function () {
             var versionName = $scope.upgradeStack.selected.stack_version + '.' + $scope.repoSubversion;
             var versionName = $scope.upgradeStack.selected.stack_version + '.' + $scope.repoSubversion;
             var stackName = $scope.upgradeStack.selected.stack_name;
             var stackName = $scope.upgradeStack.selected.stack_name;
-            Alert.success('Created version ' +
-            '<a href="#/stackVersions/' + stackName + '/' + versionName + '/edit">'
-              + stackName + '-' + versionName +
-            '</a>');
+            Alert.success($t('versions.alerts.versionCreated'), {stackName: stackName, versionName: versionName});
             $location.path('/stackVersions');
             $location.path('/stackVersions');
           })
           })
           .error(function (data) {
           .error(function (data) {
-              Alert.error('Version creation error', data.message);
+              Alert.error($t('versions.alerts.versionCreationError'), data.message);
           });
           });
       } else {
       } else {
         Stack.highlightInvalidUrls(invalidUrls);
         Stack.highlightInvalidUrls(invalidUrls);
@@ -85,7 +83,7 @@ angular.module('ambariAdminConsole')
         });
         });
     })
     })
     .catch(function (data) {
     .catch(function (data) {
-      Alert.error('getSupportedOSList error', data.message);
+      Alert.error($t('versions.alerts.osListError'), data.message);
     });
     });
   };
   };
 
 

+ 22 - 8
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('StackVersionsEditCtrl', ['$scope', '$location', 'Cluster', 'Stack', '$routeParams', 'ConfirmationModal', 'Alert', function($scope, $location, Cluster, Stack, $routeParams, ConfirmationModal, Alert) {
+.controller('StackVersionsEditCtrl', ['$scope', '$location', 'Cluster', 'Stack', '$routeParams', 'ConfirmationModal', 'Alert', '$translate', function($scope, $location, Cluster, Stack, $routeParams, ConfirmationModal, Alert, $translate) {
+  var $t = $translate.instant;
   $scope.editController = true;
   $scope.editController = true;
   $scope.osList = [];
   $scope.osList = [];
   $scope.skipValidation = false;
   $scope.skipValidation = false;
@@ -104,7 +105,7 @@ angular.module('ambariAdminConsole')
       $scope.osList = osList;
       $scope.osList = osList;
     })
     })
     .catch(function (data) {
     .catch(function (data) {
-      Alert.error('getSupportedOSList error', data.message);
+      Alert.error($t('versions.alerts.osListError'), data.message);
     });
     });
   };
   };
 
 
@@ -129,7 +130,11 @@ angular.module('ambariAdminConsole')
       }
       }
     });
     });
     if (updateRepoUrl && !$scope.deleteEnabled) {
     if (updateRepoUrl && !$scope.deleteEnabled) {
-      ConfirmationModal.show('Confirm Base URL Change', 'You are about to change repository Base URLs that are already in use. Please confirm that you intend to make this change and that the new Base URLs point to the same exact Stack version and build', "Confirm Change").then(function() {
+      ConfirmationModal.show(
+          $t('versions.changeBaseURLConfirmation.title'),
+          $t('versions.changeBaseURLConfirmationTip.message'),
+          $t('common.controls.confirmChange')
+      ).then(function() {
         $scope.updateRepoVersions();
         $scope.updateRepoVersions();
       });
       });
     } else {
     } else {
@@ -145,10 +150,14 @@ angular.module('ambariAdminConsole')
     return Stack.validateBaseUrls($scope.skipValidation, $scope.osList, upgradeStack).then(function (invalidUrls) {
     return Stack.validateBaseUrls($scope.skipValidation, $scope.osList, upgradeStack).then(function (invalidUrls) {
       if (invalidUrls.length === 0) {
       if (invalidUrls.length === 0) {
         Stack.updateRepo($scope.stackName, $scope.stackVersion, $scope.id, $scope.updateObj).then(function () {
         Stack.updateRepo($scope.stackName, $scope.stackVersion, $scope.id, $scope.updateObj).then(function () {
-          Alert.success('Edited version <a href="#/stackVersions/' + $scope.stackName + '/' + $scope.versionName + '/edit">' + $scope.displayName + '</a>');
+          Alert.success($t('versions.alerts.versionEdited', {
+            stackName: $scope.stackName,
+            versionName: $scope.versionName,
+            displayName: $scope.displayName
+          }));
           $location.path('/stackVersions');
           $location.path('/stackVersions');
         }).catch(function (data) {
         }).catch(function (data) {
-          Alert.error('Version update error', data.message);
+          Alert.error($t('versions.alerts.versionUpdateError'), data.message);
         });
         });
       } else {
       } else {
         Stack.highlightInvalidUrls(invalidUrls);
         Stack.highlightInvalidUrls(invalidUrls);
@@ -174,12 +183,17 @@ angular.module('ambariAdminConsole')
   };
   };
 
 
   $scope.delete = function () {
   $scope.delete = function () {
-    ConfirmationModal.show('Deregister Version', { "url": 'views/modals/BodyForDeregisterVersion.html',
-      "scope": {"displayName": $scope.displayName }}).then(function() {
+    ConfirmationModal.show(
+      $t('versions.deregister'),
+      {
+        "url": 'views/modals/BodyForDeregisterVersion.html',
+        "scope": {"displayName": $scope.displayName }
+      }
+    ).then(function() {
       Stack.deleteRepo($scope.stackName, $scope.stackVersion, $scope.id).then( function () {
       Stack.deleteRepo($scope.stackName, $scope.stackVersion, $scope.id).then( function () {
         $location.path('/stackVersions');
         $location.path('/stackVersions');
       }).catch(function (data) {
       }).catch(function (data) {
-        Alert.error('Version delete error', data.message);
+        Alert.error($t('versions.alerts.versionDeleteError'), data.message);
       });
       });
     });
     });
   };
   };

+ 3 - 2
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('StackVersionsListCtrl', ['$scope', 'Cluster', 'Stack', '$routeParams', function ($scope, Cluster, Stack, $routeParams) {
+.controller('StackVersionsListCtrl', ['$scope', 'Cluster', 'Stack', '$routeParams', '$translate', function ($scope, Cluster, Stack, $routeParams, $translate) {
+  var $t = $translate.instant;
   $scope.clusterName = $routeParams.clusterName;
   $scope.clusterName = $routeParams.clusterName;
   $scope.filter = {
   $scope.filter = {
     version: '',
     version: '',
@@ -91,7 +92,7 @@ angular.module('ambariAdminConsole')
 
 
     $scope.fillClusters = function (clusters) {
     $scope.fillClusters = function (clusters) {
       $scope.dropDownClusters = [].concat(clusters);
       $scope.dropDownClusters = [].concat(clusters);
-      var options = [{label: "All", value: ''}];
+      var options = [{label: $t('common.all'), value: ''}];
       angular.forEach(clusters, function (cluster) {
       angular.forEach(clusters, function (cluster) {
         options.push({
         options.push({
           label: cluster.Clusters.cluster_name,
           label: cluster.Clusters.cluster_name,

+ 7 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('UsersCreateCtrl',['$scope', '$routeParams', 'User', '$location', 'Alert', 'UnsavedDialog', function($scope, $routeParams, User, $location, Alert, UnsavedDialog) {
+.controller('UsersCreateCtrl',['$scope', '$routeParams', 'User', '$location', 'Alert', 'UnsavedDialog', '$translate', function($scope, $routeParams, User, $location, Alert, UnsavedDialog, $translate) {
+  var $t = $translate.instant;
   $scope.user = {
   $scope.user = {
     active: true
     active: true
   };
   };
@@ -33,11 +34,14 @@ angular.module('ambariAdminConsole')
         'Users/active': !!$scope.user.active,
         'Users/active': !!$scope.user.active,
         'Users/admin': !!$scope.user.admin
         'Users/admin': !!$scope.user.admin
       }).then(function() {
       }).then(function() {
-        Alert.success('Created user <a href="#/users/' + encodeURIComponent($scope.user.user_name) + '">' + $scope.user.user_name + "</a>");
+        Alert.success($t('users.alerts.userCreated', {
+          userName: $scope.user.user_name,
+          encUserName: encodeURIComponent($scope.user.user_name)
+        }));
         $scope.form.$setPristine();
         $scope.form.$setPristine();
         $location.path(targetUrl);
         $location.path(targetUrl);
       }).catch(function(data) {
       }).catch(function(data) {
-        Alert.error('User creation error', data.data.message);
+        Alert.error($t('users.alerts.userCreationError'), data.data.message);
       });
       });
     }
     }
   };
   };

+ 7 - 6
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js

@@ -18,7 +18,8 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-  .controller('UsersListCtrl',['$scope', 'User', '$modal', '$rootScope', 'UserConstants', function($scope, User, $modal, $rootScope, UserConstants) {
+  .controller('UsersListCtrl',['$scope', 'User', '$modal', '$rootScope', 'UserConstants', '$translate', function($scope, User, $modal, $rootScope, UserConstants, $translate) {
+  var $t = $translate.instant;
   $scope.users = [];
   $scope.users = [];
   $scope.usersPerPage = 10;
   $scope.usersPerPage = 10;
   $scope.currentPage = 1;
   $scope.currentPage = 1;
@@ -53,16 +54,16 @@ angular.module('ambariAdminConsole')
   };
   };
 
 
   $scope.actvieFilterOptions = [
   $scope.actvieFilterOptions = [
-    {label: 'All', value: '*'}, 
-    {label: 'Active', value: true}, 
-    {label:'Inactive', value:false}
+    {label: $t('common.all'), value: '*'},
+    {label: $t('users.active'), value: true},
+    {label: $t('users.inactive'), value:false}
   ];
   ];
   $scope.currentActiveFilter = $scope.actvieFilterOptions[0];
   $scope.currentActiveFilter = $scope.actvieFilterOptions[0];
 
 
-  $scope.typeFilterOptions = [{ label: 'All', value: '*'}]
+  $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
     .concat(Object.keys(UserConstants.TYPES).map(function(key) {
     .concat(Object.keys(UserConstants.TYPES).map(function(key) {
       return {
       return {
-        label: UserConstants.TYPES[key].NAME,
+        label: $t(UserConstants.TYPES[key].LABEL_KEY),
         value: UserConstants.TYPES[key].VALUE
         value: UserConstants.TYPES[key].VALUE
       };
       };
     }));
     }));

+ 37 - 18
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js

@@ -18,7 +18,9 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q) {
+.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', '$translate', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, $translate) {
+
+  var $t = $translate.instant;
 
 
   function loadUserInfo(){
   function loadUserInfo(){
     User.get($routeParams.id).then(function(data) {
     User.get($routeParams.id).then(function(data) {
@@ -56,13 +58,13 @@ angular.module('ambariAdminConsole')
     // Remove user from groups
     // Remove user from groups
     angular.forEach(diff.del, function(groupName) {
     angular.forEach(diff.del, function(groupName) {
       promises.push(Group.removeMemberFromGroup(groupName, $scope.user.user_name).catch(function(data) {
       promises.push(Group.removeMemberFromGroup(groupName, $scope.user.user_name).catch(function(data) {
-        Alert.error('Removing from group error', data.data.message);
+        Alert.error($t('users.alerts.removeUserError'), data.data.message);
       }));
       }));
     });
     });
     // Add user to groups
     // Add user to groups
     angular.forEach(diff.add, function(groupName) {
     angular.forEach(diff.add, function(groupName) {
       promises.push(Group.addMemberToGroup(groupName, $scope.user.user_name).catch(function(data) {
       promises.push(Group.addMemberToGroup(groupName, $scope.user.user_name).catch(function(data) {
-        Alert.error('Cannot add user to group', data.data.message);
+        Alert.error($t('users.alert.cannotAddUser'), data.data.message);
       }));
       }));
     });
     });
     $q.all(promises).then(function() {
     $q.all(promises).then(function() {
@@ -111,16 +113,24 @@ angular.module('ambariAdminConsole')
 
 
     modalInstance.result.then(function(data) {
     modalInstance.result.then(function(data) {
       User.setPassword($scope.user, data.password, data.currentUserPassword).then(function() {
       User.setPassword($scope.user, data.password, data.currentUserPassword).then(function() {
-        Alert.success('Password changed.');
+        Alert.success($t('users.alerts.passwordChanged'));
       }).catch(function(data) {
       }).catch(function(data) {
-        Alert.error('Cannot change password', data.data.message);
+        Alert.error($t('users.alerts.cannotChangePassword'), data.data.message);
       });
       });
     }); 
     }); 
   };
   };
 
 
   $scope.toggleUserActive = function() {
   $scope.toggleUserActive = function() {
     if(!$scope.isCurrentUser){
     if(!$scope.isCurrentUser){
-      ConfirmationModal.show('Change Status', 'Are you sure you want to change status for user "'+ $scope.user.user_name +'" to '+($scope.user.active ? 'inactive' : 'active')+'?').then(function() {
+      var newStatusKey = $scope.user.active ? 'inactive' : 'active',
+        newStatus = $t('users.' + newStatusKey).toLowerCase();
+      ConfirmationModal.show(
+        $t('users.changeStatusConfirmation.title'),
+        $t('users.changeStatusConfirmation.message', {
+          userName: $scope.user.user_name,
+          status: newStatus
+        })
+      ).then(function() {
         User.setActive($scope.user.user_name, $scope.user.active);
         User.setActive($scope.user.user_name, $scope.user.active);
       })
       })
       .catch(function() {
       .catch(function() {
@@ -130,13 +140,14 @@ angular.module('ambariAdminConsole')
   };    
   };    
   $scope.toggleUserAdmin = function() {
   $scope.toggleUserAdmin = function() {
     if(!$scope.isCurrentUser){
     if(!$scope.isCurrentUser){
-      var message = '';
-      if( !$scope.user.admin ){
-        message = 'Are you sure you want to grant Admin privilege to user ';
-      } else {
-        message = 'Are you sure you want to revoke Admin privilege from user ';
-      }
-      ConfirmationModal.show('Change Admin Privilege', message + '"'+$scope.user.user_name+'"?').then(function() {
+      var action = $scope.user.admin ? 'revoke' : 'grant';
+      ConfirmationModal.show(
+        $t('users.changePrivilegeConfirmation.title'),
+        $t('users.changePrivilegeConfirmation.message', {
+          action: action,
+          userName: $scope.user.user_name
+        })
+      ).then(function() {
         User.setAdmin($scope.user.user_name, $scope.user.admin)
         User.setAdmin($scope.user.user_name, $scope.user.admin)
         .then(function() {
         .then(function() {
           loadPrivileges();
           loadPrivileges();
@@ -145,12 +156,20 @@ angular.module('ambariAdminConsole')
       .catch(function() {
       .catch(function() {
         $scope.user.admin = !$scope.user.admin;
         $scope.user.admin = !$scope.user.admin;
       });
       });
-        
+
     }
     }
-  };    
+  };
 
 
   $scope.deleteUser = function() {
   $scope.deleteUser = function() {
-    ConfirmationModal.show('Delete User', 'Are you sure you want to delete user "'+ $scope.user.user_name +'"?').then(function() {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('common.user')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('common.user').toLowerCase(),
+        instanceName: '"' + $scope.user.user_name + '"'
+      })
+    ).then(function() {
       User.delete($scope.user.user_name).then(function() {
       User.delete($scope.user.user_name).then(function() {
         $location.path('/users');
         $location.path('/users');
       });
       });
@@ -181,12 +200,12 @@ angular.module('ambariAdminConsole')
 
 
       $scope.privileges = data.data.items.length ? privileges : null;
       $scope.privileges = data.data.items.length ? privileges : null;
       $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
       $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
-      $scope.noViewPriv = $.isEmptyObject(privileges.views)
+      $scope.noViewPriv = $.isEmptyObject(privileges.views);
       $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
       $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
       $scope.dataLoaded = true;
       $scope.dataLoaded = true;
 
 
     }).catch(function(data) {
     }).catch(function(data) {
-      Alert.error('Cannot load privileges', data.data.message);
+      Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
     });
     });
   }
   }
   loadPrivileges();
   loadPrivileges();

+ 4 - 4
ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js

@@ -37,12 +37,12 @@ angular.module('ambariAdminConsole')
       };
       };
 
 
       var isIE = function () {
       var isIE = function () {
-        var ua = window.navigator.userAgent
-        var msie = ua.indexOf("MSIE ")
+        var ua = window.navigator.userAgent;
+        var msie = ua.indexOf("MSIE ");
 
 
         // If Internet Explorer, return version number
         // If Internet Explorer, return version number
         if (msie > 0)
         if (msie > 0)
-          return !!parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))
+          return !!parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
 
 
         // If Internet Explorer 11 handling differently becaue UserAgent string updated by Microsoft
         // If Internet Explorer 11 handling differently becaue UserAgent string updated by Microsoft
         else if (!!navigator.userAgent.match(/Trident\/7\./))
         else if (!!navigator.userAgent.match(/Trident\/7\./))
@@ -232,7 +232,7 @@ angular.module('ambariAdminConsole')
         }
         }
         if( $scope.editMode && !angular.equals($scope.items, $scope.itemsSource)){
         if( $scope.editMode && !angular.equals($scope.items, $scope.itemsSource)){
           var modalInstance = $modal.open({
           var modalInstance = $modal.open({
-            template: '<div class="modal-header"><h3 class="modal-title">Warning</h3></div><div class="modal-body">You have unsaved changes. Save changes or discard?</div><div class="modal-footer"><div class="btn btn-default" ng-click="cancel()">Cancel</div><div class="btn btn-warning" ng-click="discard()">Discard</div><div class="btn btn-primary" ng-click="save()">Save</div></div>',
+            template: '<div class="modal-header"><h3 class="modal-title">{{"common.warning" | translate}}</h3></div><div class="modal-body">{{"common.alerts.unsavedChanges" | translate}}</div><div class="modal-footer"><div class="btn btn-default" ng-click="cancel()">{{"common.controls.cancel" | translate}}</div><div class="btn btn-warning" ng-click="discard()">{{"common.controls.discard" | translate}}</div><div class="btn btn-primary" ng-click="save()">{{"common.controls.save" | translate}}</div></div>',
             controller: ['$scope', '$modalInstance', function($scope, $modalInstance) {
             controller: ['$scope', '$modalInstance', function($scope, $modalInstance) {
               $scope.save = function() {
               $scope.save = function() {
                 $modalInstance.close('save');
                 $modalInstance.close('save');

+ 274 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js

@@ -22,7 +22,280 @@ angular.module('ambariAdminConsole')
   $translateProvider.translations('en',{
   $translateProvider.translations('en',{
     'CLUSTER.ADMINISTRATOR': 'Operator',
     'CLUSTER.ADMINISTRATOR': 'Operator',
     'CLUSTER.USER': 'Read-Only',
     'CLUSTER.USER': 'Read-Only',
-    'VIEW.USER': 'Use'
+    'VIEW.USER': 'Use',
+
+    'common': {
+      'ambari': 'Ambari',
+      'apacheAmbari': 'Apache Ambari',
+      'about': 'About',
+      'version': 'Version',
+      'signOut': 'Sign out',
+      'clusters': 'Clusters',
+      'views': 'Views',
+      'roles': 'Roles',
+      'users': 'Users',
+      'groups': 'Groups',
+      'versions': 'Versions',
+      'details': 'Details',
+      'goToDashboard': 'Go to Dashboard',
+      'noClusters': 'No Clusters',
+      'view': 'View',
+      'displayLabel': 'Display label',
+      'search': 'Search',
+      'name': 'Name',
+      'any': 'Any',
+      'none': 'None',
+      'type': 'Type',
+      'add': 'Add {{term}}',
+      'delete': 'Delete {{term}}',
+      'cannotDelete': 'Cannot Delete {{term}}',
+      'privileges': 'Privileges',
+      'cluster': 'Cluster',
+      'clusterRole': 'Cluster Role',
+      'viewPermissions': 'View Permissions',
+      'getInvolved': 'Get involved!',
+      'license': 'Licensed under the Apache License, Version 2.0',
+      'tableFilterMessage': '{{showed}} of {{total}} {{term}} showing',
+      'yes': 'Yes',
+      'no': 'No',
+      'renameCluster': 'Rename Cluster',
+      'renameClusterTip': 'Only alpha-numeric characters, up to 80 characters',
+      'clusterCreationInProgress': 'Cluster creation in progress...',
+      'userGroupManagement': 'User + Group Management',
+      'all': 'All',
+      'group': 'Group',
+      'user': 'User',
+      'deleteConfirmation': 'Are you sure you want to delete {{instanceType}} {{instanceName}}?',
+      'local': 'Local',
+      'ldap': 'LDAP',
+      'jwt': 'JWT',
+      'warning': 'Warning',
+
+      'clusterNameChangeConfirmation': {
+        'title': 'Confirm Cluster Name Change',
+        'message': 'Are you sure you want to change the cluster name to {{clusterName}}?'
+      },
+
+      'controls': {
+        'cancel': 'Cancel',
+        'close': 'Close',
+        'ok': 'OK',
+        'save': 'Save',
+        'clearFilters': 'clear filters',
+        'confirmChange': 'Confirm Change',
+        'discard': 'Discard'
+      },
+
+      'alerts': {
+        'fieldRequired': 'Field required!',
+        'fieldIsRequired': 'This field is required.',
+        'noSpecialChars': 'Must no contain special characters!',
+        'instanceExists': 'Instance with this name already exists.',
+        'nothingToDisplay': 'No {{term}} to display.',
+        'noPrivileges': 'No {{term}} privileges',
+        'noPrivilegesDescription': 'This {{term}} does not have any privileges.',
+        'timeOut': 'You will be automatically logged out in <b>{{time}}</b> seconds due to inactivity.',
+        'isInvalid': '{{term}} Invalid.',
+        'cannotSavePermissions': 'Cannot save permissions',
+        'cannotLoadPrivileges': 'Cannot load privileges',
+        'cannotLoadClusterStatus': 'Cannot load cluster status',
+        'clusterRenamed': 'The cluster has been renamed to {{clusterName}}.',
+        'cannotRenameCluster': 'Cannot rename cluster to {{clusterName}}',
+        'unsavedChanges': 'You have unsaved changes. Save changes or discard?'
+      }
+    },
+
+    'main': {
+      'title': 'Welcome to Apache Ambari',
+      'noClusterDescription': 'Provision a cluster, manage who can access the cluster, and customize views for Ambari users.',
+      'hasClusterDescription': 'Monitor your cluster resources, manage who can access the cluster, and customize views for Ambari users.',
+      'autoLogOut': 'Automatic Logout',
+
+      'operateCluster': {
+        'title': 'Operate Your Cluster',
+        'description': 'Manage the configuration of your cluster and monitor the health of your services',
+        'manageRoles': 'Manage Roles'
+      },
+
+      'createCluster': {
+        'title': 'Create a Cluster',
+        'description': 'Use the Install Wizard to select services and configure your cluster',
+        'launchInstallWizard': 'Launch Install Wizard'
+      },
+
+      'manageUsersAndGroups': {
+        'title': 'Manage Users + Groups',
+        'description': 'Manage the users and groups that can access Ambari'
+      },
+
+      'deployViews': {
+        'title': 'Deploy Views',
+        'description': 'Create view instances and grant permissions'
+      },
+
+      'controls': {
+        'remainLoggedIn': 'Remain Logged In',
+        'logOut': 'Log Out Now'
+      }
+    },
+
+    'views': {
+      'viewInstance': 'View Instance',
+      'create': 'Create Instance',
+      'createViewInstance': 'Create View Instance',
+      'edit': 'Edit',
+      'viewName': 'View Name',
+      'instances': 'Instances',
+      'instanceName': 'Instance Name',
+      'instanceId': 'Instance ID',
+      'displayName': 'Display Name',
+      'settings': 'Settings',
+      'advanced': 'Advanced',
+      'visible': 'Visible',
+      'description': 'Description',
+      'instanceDescription': 'Instance Description',
+      'clusterConfiguration': 'Cluster Configuration',
+      'localCluster': 'Local Ambari Managed Cluster',
+      'clusterName': 'Cluster Name',
+      'custom': 'Custom',
+      'icon': 'Icon',
+      'icon64': 'Icon64',
+      'permissions': 'Permissions',
+      'permission': 'Permission',
+      'grantUsers': 'Grant permission to these users',
+      'grantGroups': 'Grant permission to these groups',
+      'configuration': 'Configuration',
+      'goToInstance': 'Go to instance',
+      'pending': 'Pending...',
+      'deploying': 'Deploying...',
+
+      'alerts': {
+        'noSpecialChars': 'Must not contain any special characters.',
+        'noSpecialCharsOrSpaces': 'Must not contain any special characters or spaces.',
+        'noProperties': 'There are no properties defined for this view.',
+        'noPermissions': 'There are no permissions defined for this view.',
+        'cannotEditInstance': 'Cannot Edit Static Instances',
+        'cannotDeleteStaticInstance': 'Cannot Delete Static Instances',
+        'deployError': 'Error deploying. Check Ambari Server log.',
+        'unableToCreate': 'Unable to create view instances',
+        'onlySimpleChars': 'Must contain only simple characters.',
+        'cannotUseOption': 'This view cannot use this option',
+        'unableToResetErrorMessage': 'Unable to reset error message for prop: {{key}}',
+        'instanceCreated': 'Created View Instance {{instanceName}}',
+        'unableToParseError': 'Unable to parse error message: {{message}}',
+        'cannotCreateInstance': 'Cannot create instance',
+        'cannotLoadInstanceInfo': 'Cannot load instance info',
+        'cannotLoadPermissions': 'Cannot load permissions',
+        'cannotSaveSettings': 'Cannot save settings',
+        'cannotSaveProperties': 'Cannot save properties',
+        'cannotDeleteInstance': 'Cannot delete instance',
+        'cannotLoadViews': 'Cannot load views'
+      }
+    },
+
+    'clusters': {
+      'switchToList': 'Switch&nbsp;to&nbsp;list&nbsp;view',
+      'switchToBlock': 'Switch&nbsp;to&nbsp;block&nbsp;view',
+      'role': 'Role',
+
+      'alerts': {
+        'cannotLoadClusterData': 'Cannot load cluster data'
+      }
+    },
+
+    'groups': {
+      'createLocal': 'Create Local Group',
+      'name': 'Group name',
+      'members': 'Members',
+
+      'alerts': {
+        'groupCreated': 'Created group <a href="#/groups/{{groupName}}/edit">{{groupName}}</a>',
+        'groupCreationError': 'Group creation error',
+        'cannotUpdateGroupMembers': 'Cannot update group members',
+        'getGroupsListError': 'Get groups list error'
+      }
+    },
+
+    'users': {
+      'username': 'Username',
+      'userName': 'User name',
+      'ambariAdmin': 'Ambari Admin',
+      'changePassword': 'Change Password',
+      'changePasswordFor': 'Change Password for {{userName}}',
+      'yourPassword': 'Your Password',
+      'newPassword': 'New User Password',
+      'newPasswordConfirmation': 'New User Password Confirmation',
+      'create': 'Create Local User',
+      'active': 'Active',
+      'inactive': 'Inactive',
+      'status': 'Status',
+      'password': 'Password',
+      'passwordConfirmation': 'Password сonfirmation',
+      'userIsAdmin': 'This user is an Ambari Admin and has all privileges.',
+
+      'changeStatusConfirmation': {
+        'title': 'Change Status',
+        'message': 'Are you sure you want to change status for user "{{userName}}" to {{status}}?'
+      },
+
+      'changePrivilegeConfirmation': {
+        'title': 'Change Admin Privilege',
+        'message': 'Are you sure you want to {{action}} Admin privilege to user "{{userName}}"?'
+      },
+
+      'roles': {
+        'clusterUser': 'Cluster User',
+        'clusterAdministrator': 'Cluster Administrator',
+        'clusterOperator': 'Cluster Operator',
+        'serviceAdministrator': 'Service Administrator',
+        'serviceOperator': 'Service Operator'
+      },
+
+      'alerts': {
+        'passwordRequired': 'Password required!',
+        'wrongPassword': 'Password must match!',
+        'cannotChange': 'Cannot Change {{term}}',
+        'userCreated': 'Created user <a href="#/users/{{encUserName}}/edit">{{userName}}</a>',
+        'userCreationError': 'User creation error',
+        'removeUserError': 'Removing from group error',
+        'cannotAddUser': 'Cannot add user to group',
+        'passwordChanged': 'Password changed.',
+        'cannotChangePassword': 'Cannot change password'
+      }
+    },
+
+    'versions': {
+      'current': 'Current',
+      'inUse': 'In Use',
+      'installed': 'Installed',
+      'installOn': 'Install on...',
+      'register': 'Register Version',
+      'deregister': 'Deregister Version',
+      'deregisterConfirmation': 'Are you sure you want to deregister version <strong>{{versionName}}</strong> ?',
+      'placeholder': 'Version Number (0.0)',
+      'repos': 'Repositories',
+      'os': 'OS',
+      'baseURL': 'Base URL',
+      'skipValidation': 'Skip Repository Base URL validation (Advanced)',
+
+      'changeBaseURLConfirmation': {
+        'title': 'Confirm Base URL Change',
+        'message': 'You are about to change repository Base URLs that are already in use. Please confirm that you intend to make this change and that the new Base URLs point to the same exact Stack version and build'
+      },
+
+      'alerts': {
+        'baseURLs': 'Provide Base URLs for the Operating Systems you are configuring. Uncheck all other Operating Systems.',
+        'validationFailed': 'Some of the repositories failed validation. Make changes to the base url or skip validation if you are sure that urls are correct',
+        'skipValidationWarning': '<b>Warning:</b> This is for advanced users only. Use this option if you want to skip validation for Repository Base URLs.',
+        'filterListError': 'Fetch stack version filter list error',
+        'versionCreated': 'Created version <a href="#/stackVersions/{{stackName}}/{{versionName}}/edit">{{stackName}}-{{versionName}}</a>',
+        'versionCreationError': 'Version creation error',
+        'osListError': 'getSupportedOSList error',
+        'versionEdited': 'Edited version <a href="#/stackVersions/{{stackName}}/{{versionName}}/edit">{{displayName}}</a>',
+        'versionUpdateError': 'Version update error',
+        'versionDeleteError': 'Version delete error'
+      }
+    }
   });
   });
 
 
   $translateProvider.preferredLanguage('en');
   $translateProvider.preferredLanguage('en');

+ 1 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js

@@ -48,7 +48,7 @@ angular.module('ambariAdminConsole')
       elem.append('<div class="more">'+moreInfo.replace(/\./g, '.<wbr />')+'</div>');
       elem.append('<div class="more">'+moreInfo.replace(/\./g, '.<wbr />')+'</div>');
     }
     }
 
 
-    $('<button type="button" class="close"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>')
+    $('<button type="button" class="close"><span aria-hidden="true">&times;</span><span class="sr-only">{{"common.controls.close" | translate}}</span></button>')
       .appendTo(elem)
       .appendTo(elem)
       .on('click', function() {
       .on('click', function() {
         var $box = $(this).closest('.ambariAlert');
         var $box = $(this).closest('.ambariAlert');

+ 5 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js

@@ -18,7 +18,9 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.factory('ConfirmationModal', ['$modal', '$q', function($modal, $q) {
+.factory('ConfirmationModal', ['$modal', '$q', '$translate', function($modal, $q, $translate) {
+
+  var $t = $translate.instant;
 
 
 	return {
 	return {
 		show: function(header, body, confirmText, cancelText) {
 		show: function(header, body, confirmText, cancelText) {
@@ -31,8 +33,8 @@ angular.module('ambariAdminConsole')
           $scope.isTempalte = !!body.url;
           $scope.isTempalte = !!body.url;
 					$scope.body = body;
 					$scope.body = body;
           $scope.innerScope = body.scope;
           $scope.innerScope = body.scope;
-          $scope.confirmText = confirmText || "OK";
-          $scope.cancelText = cancelText || "Cancel";
+          $scope.confirmText = confirmText || $t('common.controls.ok');
+          $scope.cancelText = cancelText || $t('common.controls.cancel');
 
 
 					$scope.ok = function() {
 					$scope.ok = function() {
 						$modalInstance.close();
 						$modalInstance.close();

+ 16 - 15
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js

@@ -18,20 +18,21 @@
 'use strict';
 'use strict';
 
 
 angular.module('ambariAdminConsole')
 angular.module('ambariAdminConsole')
-.factory('Stack', ['$http', '$q', 'Settings', function ($http, $q, Settings) {
-  var statusMap = {
-    'INSTALLED': {
-      label: 'Installed',
-      class: 'label-default'
-    },
-    'IN_USE': {
-      label: 'In Use',
-      class: 'label-info'
-    },
-    'CURRENT': {
-      label: 'Current',
-      class: 'label-success'
-    }
+.factory('Stack', ['$http', '$q', 'Settings', '$translate', function ($http, $q, Settings,$translate) {
+  var $t = $translate.instant,
+    statusMap = {
+      'INSTALLED': {
+        label: $t('versions.installed'),
+        class: 'label-default'
+      },
+      'IN_USE': {
+        label: $t('versions.inUse'),
+        class: 'label-info'
+      },
+      'CURRENT': {
+        label: $t('versions.current'),
+        class: 'label-success'
+      }
   };
   };
   /**
   /**
    * parse raw json to formatted objects
    * parse raw json to formatted objects
@@ -199,7 +200,7 @@ angular.module('ambariAdminConsole')
     },
     },
 
 
     getSupportedOSList: function (stackName, stackVersion) {
     getSupportedOSList: function (stackName, stackVersion) {
-      var url = Settings.baseUrl + '/stacks/' + stackName + '/versions/' + stackVersion + '?fields=operating_systems/repositories/Repositories'
+      var url = Settings.baseUrl + '/stacks/' + stackName + '/versions/' + stackVersion + '?fields=operating_systems/repositories/Repositories';
       var deferred = $q.defer();
       var deferred = $q.defer();
       $http.get(url, {mock: 'stack/operatingSystems.json'})
       $http.get(url, {mock: 'stack/operatingSystems.json'})
       .success(function (data) {
       .success(function (data) {

+ 1 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js

@@ -22,7 +22,7 @@ angular.module('ambariAdminConsole')
 
 
 	return function(){
 	return function(){
 		var modalInstance = $modal.open({
 		var modalInstance = $modal.open({
-      template: '<div class="modal-header"><h3 class="modal-title">Warning</h3></div><div class="modal-body">You have unsaved changes. Save changes or discard?</div><div class="modal-footer"><div class="btn btn-default" ng-click="cancel()">Cancel</div><div class="btn btn-warning" ng-click="discard()">Discard</div><div class="btn btn-primary" ng-click="save()">Save</div></div>',
+      template: '<div class="modal-header"><h3 class="modal-title">{{"common.warning" | translate}}</h3></div><div class="modal-body">{{"common.alerts.unsavedChanges" | translate}}</div><div class="modal-footer"><div class="btn btn-default" ng-click="cancel()">{{"common.controls.cancel" | translate}}</div><div class="btn btn-warning" ng-click="discard()">{{"common.controls.discard" | translate}}</div><div class="btn btn-primary" ng-click="save()">{{"common.controls.save" | translate}}</div></div>',
       controller: ['$scope', '$modalInstance', function($scope, $modalInstance) {
       controller: ['$scope', '$modalInstance', function($scope, $modalInstance) {
         $scope.save = function() {
         $scope.save = function() {
           $modalInstance.close('save');
           $modalInstance.close('save');

+ 3 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js

@@ -24,15 +24,15 @@ angular.module('ambariAdminConsole').constant('UserConstants', {
   TYPES: {
   TYPES: {
     LOCAL: {
     LOCAL: {
       VALUE: 'LOCAL',
       VALUE: 'LOCAL',
-      NAME: 'Local'
+      LABEL_KEY: 'common.local'
     },
     },
     LDAP: {
     LDAP: {
       VALUE: 'LDAP',
       VALUE: 'LDAP',
-      NAME: 'LDAP'
+      LABEL_KEY: 'common.ldap'
     },
     },
     JWT: {
     JWT: {
       VALUE: 'JWT',
       VALUE: 'JWT',
-      NAME: 'JWT'
+      LABEL_KEY: 'common.jwt'
     }
     }
   }
   }
 });
 });