You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/12/23 16:07:20 UTC

[1/2] ambari git commit: AMBARI-14473. Cannot update storm zk quorum from ambari UI (alexantonenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk c9981170a -> 9f59ed5b0


AMBARI-14473. Cannot update storm zk quorum from ambari UI (alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9f59ed5b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9f59ed5b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9f59ed5b

Branch: refs/heads/trunk
Commit: 9f59ed5b07f3d44ed0ef1539003a19db9bd56498
Parents: 764fda9
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Dec 23 14:10:07 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Dec 23 17:07:18 2015 +0200

----------------------------------------------------------------------
 .../common-services/STORM/0.9.1.2.1/configuration/storm-site.xml  | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/9f59ed5b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml
index 3e9a90e..4719dbb 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml
@@ -44,8 +44,7 @@
     <value>['localhost']</value>
     <description>A list of hosts of ZooKeeper servers used to manage the cluster.</description>
     <value-attributes>
-      <type>componentHosts</type>
-      <editable-only-at-install>true</editable-only-at-install>
+      <type>multiLine</type>
       <overridable>false</overridable>
     </value-attributes>
   </property>


[2/2] ambari git commit: AMBARI-14481. Ambari Admin: string constants used in controllers, directives and services should be defined once (alexantonenko)

Posted by al...@apache.org.
AMBARI-14481. Ambari Admin: string constants used in controllers, directives and services should be defined once (alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/764fda9a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/764fda9a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/764fda9a

Branch: refs/heads/trunk
Commit: 764fda9aba84b935ae21a4efa5ca0179ee97d6e3
Parents: c998117
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Dec 23 14:06:53 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Dec 23 17:07:18 2015 +0200

----------------------------------------------------------------------
 .../app/scripts/controllers/NavbarCtrl.js       |  16 +-
 .../ambariViews/CreateViewInstanceCtrl.js       |  15 +-
 .../controllers/ambariViews/ViewsEditCtrl.js    |  35 ++-
 .../controllers/ambariViews/ViewsListCtrl.js    |   7 +-
 .../clusters/ClustersManageAccessCtrl.js        |   7 +-
 .../controllers/clusters/UserAccessListCtrl.js  |  25 +-
 .../controllers/groups/GroupsCreateCtrl.js      |   7 +-
 .../controllers/groups/GroupsEditCtrl.js        |  19 +-
 .../controllers/groups/GroupsListCtrl.js        |  11 +-
 .../app/scripts/controllers/mainCtrl.js         |  11 +-
 .../stackVersions/StackVersionsCreateCtrl.js    |  14 +-
 .../stackVersions/StackVersionsEditCtrl.js      |  30 +-
 .../stackVersions/StackVersionsListCtrl.js      |   5 +-
 .../controllers/users/UsersCreateCtrl.js        |  10 +-
 .../scripts/controllers/users/UsersListCtrl.js  |  13 +-
 .../scripts/controllers/users/UsersShowCtrl.js  |  55 ++--
 .../app/scripts/directives/editableList.js      |   8 +-
 .../ui/admin-web/app/scripts/i18n.config.js     | 275 ++++++++++++++++++-
 .../ui/admin-web/app/scripts/services/Alert.js  |   2 +-
 .../app/scripts/services/ConfirmationModal.js   |   8 +-
 .../ui/admin-web/app/scripts/services/Stack.js  |  31 ++-
 .../app/scripts/services/UnsavedDialog.js       |   2 +-
 .../app/scripts/services/UserConstants.js       |   6 +-
 23 files changed, 478 insertions(+), 134 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
index 2f33ae4..319a8f2 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.totalRepos = 0;
   $scope.editCluster = {
@@ -40,7 +41,7 @@ angular.module('ambariAdminConsole')
         setTimeout(loadClusterData, 1000);
       }
     }).catch(function (data) {
-      Alert.error('Cannot load cluster status', data.statusText);
+      Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
     });
   }
   loadClusterData();
@@ -56,7 +57,12 @@ angular.module('ambariAdminConsole')
   };
 
   $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() {
         $scope.saveClusterName();
       }).catch(function() {
@@ -71,9 +77,9 @@ angular.module('ambariAdminConsole')
 
     Cluster.editName(oldClusterName, newClusterName).then(function(data) {
       $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) {
-      Alert.error('Cannot rename cluster to ' + newClusterName, data.data.message);
+      Alert.error($t('common.alerts.cannotRenameCluster', {clusterName: newClusterName}), data.data.message);
     });
 
     $scope.toggleEditName();

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
index 02b7aa9..2bc1872 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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 = {};
   var targetUrl = '';
 
@@ -38,7 +39,7 @@ angular.module('ambariAdminConsole')
       });
 
       $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 = {
         view_name: viewVersion.ViewVersionInfo.view_name,
@@ -72,7 +73,7 @@ angular.module('ambariAdminConsole')
           $scope.form.instanceCreateForm[key].validationError = false;
           $scope.form.instanceCreateForm[key].validationMessage = '';
         } catch (e) {
-          console.log('Unable to reset error message for prop:', key);
+          console.log($t('views.alerts.unableToResetErrorMessage', {key: key}));
         }
       });
       $scope.errorKeys = [];
@@ -101,7 +102,7 @@ angular.module('ambariAdminConsole')
         $scope.noClusterAvailible = false;
         $scope.instance.isLocalCluster = $scope.clusterConfigurable;
       }else{
-        $scope.clusters.push("No Clusters");
+        $scope.clusters.push($t('common.noClusters'));
       }
       $scope.cluster = $scope.clusters[0];
     });
@@ -127,7 +128,7 @@ angular.module('ambariAdminConsole')
       $scope.instance.clusterName = $scope.cluster;
       View.createInstance($scope.instance)
         .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();
           if( targetUrl ){
             $location.path(targetUrl);
@@ -158,10 +159,10 @@ angular.module('ambariAdminConsole')
                 $scope.form.instanceCreateForm.generalValidationError = errorMessage;
               }
             } 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;
         });
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
index 2404dc0..ae37c88 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.isConfigurationEmpty = true;
   $scope.isSettingsEmpty = true;
@@ -47,7 +48,7 @@ angular.module('ambariAdminConsole')
       }
     })
     .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;
     }else{
       $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.isConfigurationEmpty = !$scope.numberOfClusterConfigs;
@@ -104,7 +105,7 @@ angular.module('ambariAdminConsole')
   View.getMeta($routeParams.viewId, $routeParams.version).then(function(data) {
     $scope.configurationMeta = data.data.ViewVersionInfo.parameters;
     $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) {
       item.displayName = item.name.replace(/\./g, '\.\u200B');
       item.clusterConfig = !!item.clusterConfig;
@@ -129,7 +130,7 @@ angular.module('ambariAdminConsole')
       $scope.isPermissionsEmpty = angular.equals({}, $scope.permissions);
     })
     .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;
     }else{
-      $scope.clusters.push("No Clusters");
+      $scope.clusters.push($t('common.noClusters'));
     }
     $scope.cluster = $scope.clusters[0];
   });
@@ -220,7 +221,7 @@ angular.module('ambariAdminConsole')
         }
       })
       .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) {
-        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) {
-            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)
     .catch(function(data) {
       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);
 
   $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)
       .then(function() {
         $location.path('/views');
       })
       .catch(function(data) {
-        Alert.error('Cannot delete instance', data.data.message);
+        Alert.error($t('views.alerts.cannotDeleteInstance'), data.data.message);
       });
     });
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
index b70e6fa..eadfcf7 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
@@ -18,8 +18,9 @@
 'use strict';
 
 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() {
     deferredList.forEach(function(def) {
       def.reject();
@@ -59,7 +60,7 @@ angular.module('ambariAdminConsole')
         });
       })
     }).catch(function(data) {
-      Alert.error('Cannot load views', data.data.message);
+      Alert.error($t('views.alerts.cannotLoadViews'), data.data.message);
     });
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
index 27454ee..dfc509f 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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;
   function reloadClusterData(){
     PermissionLoader.getClusterPermissions({
@@ -41,7 +42,7 @@ angular.module('ambariAdminConsole')
       $scope.permissions = pms;
     })
     .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)
     .catch(function(data) {
-      Alert.error('Cannot save permissions', data.data.message);
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
       reloadClusterData();
     });
     $scope.isEditMode = false;

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
index c9b14fc..f15607b 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
@@ -18,8 +18,9 @@
 'use strict';
 
 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.usersPerPage = 10;
   $scope.currentPage = 1;
@@ -88,7 +89,7 @@ function($scope, $location, Cluster, $modal, $rootScope, $routeParams, Permissio
           $scope.loadUsers();
         })
         .catch(function(data) {
-          Alert.error('Cannot save permissions', data.data.message);
+          Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
           $scope.loadUsers();
         });
       }
@@ -102,20 +103,20 @@ function($scope, $location, Cluster, $modal, $rootScope, $routeParams, Permissio
   };
 
   $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.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];
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
index 1768bff..67743a0 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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();
   var targetUrl = '/groups';
 
@@ -26,12 +27,12 @@ angular.module('ambariAdminConsole')
     $scope.form.submitted = true;
     if ($scope.form.$valid){
       $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();
         $location.path(targetUrl);
       })
       .catch(function(data) {
-        Alert.error('Group creation error', data.data.message);
+        Alert.error($t('groups.alerts.groupCreationError'), data.data.message);
       });
     }
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
index d35b309..048c2bf 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.group = new Group($routeParams.id);
   $scope.group.editingUsers = [];
@@ -52,7 +53,7 @@ angular.module('ambariAdminConsole')
     );
     $scope.group.members = newMembers;
     $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() {
         loadMembers();
       });
@@ -73,7 +74,15 @@ angular.module('ambariAdminConsole')
   });
 
   $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() {
         $location.path('/groups');
       }).catch(function() {
@@ -104,10 +113,10 @@ angular.module('ambariAdminConsole')
 
     $scope.privileges = data.data.items.length ? privileges : null;
     $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
-    $scope.noViewPriv = $.isEmptyObject(privileges.views)
+    $scope.noViewPriv = $.isEmptyObject(privileges.views);
     $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;    $scope.dataLoaded = true;
   }).catch(function(data) {
-    Alert.error('Cannot load privileges', data.data.message);
+    Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
   });
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
index 45316e5..df63b8c 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.groupsPerPage = 10;
@@ -50,14 +51,14 @@ angular.module('ambariAdminConsole')
       $scope.groups = groups;
     })
     .catch(function(data) {
-      console.error('Get groups list error');
+      console.error($t('groups.alerts.getGroupsListError'));
     });
   }
 
   $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];
   

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
index 1213d0d..17f5981 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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() {
     Auth.signout().finally(function() {
       $window.location.pathname = '';
@@ -59,7 +60,7 @@ angular.module('ambariAdminConsole')
         setTimeout(loadClusterData, 1000);
       }
     }).catch(function(data) {
-      Alert.error('Cannot load cluster status', data.statusText);
+      Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
     });
   }
   loadClusterData();
@@ -111,9 +112,9 @@ angular.module('ambariAdminConsole')
           backdrop: false,
           controller: ['$scope', 'Auth', function($scope, Auth) {
             $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() {
               $rootScope.timeoutModal.close();
               delete $rootScope.timeoutModal;

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
index 97a7696..a817d88 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.osList = [];
   $scope.skipValidation = false;
@@ -45,7 +46,7 @@ angular.module('ambariAdminConsole')
       $scope.afterStackVersionChange();
     })
     .catch(function (data) {
-      Alert.error('Fetch stack version filter list error', data.message);
+      Alert.error($t('versions.alerts.filterListError'), data.message);
     });
   };
   $scope.fetchStackVersionFilterList();
@@ -57,14 +58,11 @@ angular.module('ambariAdminConsole')
           .success(function () {
             var versionName = $scope.upgradeStack.selected.stack_version + '.' + $scope.repoSubversion;
             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');
           })
           .error(function (data) {
-              Alert.error('Version creation error', data.message);
+              Alert.error($t('versions.alerts.versionCreationError'), data.message);
           });
       } else {
         Stack.highlightInvalidUrls(invalidUrls);
@@ -85,7 +83,7 @@ angular.module('ambariAdminConsole')
         });
     })
     .catch(function (data) {
-      Alert.error('getSupportedOSList error', data.message);
+      Alert.error($t('versions.alerts.osListError'), data.message);
     });
   };
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
index dcd79df..0763726 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.osList = [];
   $scope.skipValidation = false;
@@ -104,7 +105,7 @@ angular.module('ambariAdminConsole')
       $scope.osList = osList;
     })
     .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) {
-      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();
       });
     } else {
@@ -145,10 +150,14 @@ angular.module('ambariAdminConsole')
     return Stack.validateBaseUrls($scope.skipValidation, $scope.osList, upgradeStack).then(function (invalidUrls) {
       if (invalidUrls.length === 0) {
         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');
         }).catch(function (data) {
-          Alert.error('Version update error', data.message);
+          Alert.error($t('versions.alerts.versionUpdateError'), data.message);
         });
       } else {
         Stack.highlightInvalidUrls(invalidUrls);
@@ -174,12 +183,17 @@ angular.module('ambariAdminConsole')
   };
 
   $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 () {
         $location.path('/stackVersions');
       }).catch(function (data) {
-        Alert.error('Version delete error', data.message);
+        Alert.error($t('versions.alerts.versionDeleteError'), data.message);
       });
     });
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
index 3137d5c..e3178df 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.filter = {
     version: '',
@@ -91,7 +92,7 @@ angular.module('ambariAdminConsole')
 
     $scope.fillClusters = function (clusters) {
       $scope.dropDownClusters = [].concat(clusters);
-      var options = [{label: "All", value: ''}];
+      var options = [{label: $t('common.all'), value: ''}];
       angular.forEach(clusters, function (cluster) {
         options.push({
           label: cluster.Clusters.cluster_name,

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
index d853d6a..bcb7bfc 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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 = {
     active: true
   };
@@ -33,11 +34,14 @@ angular.module('ambariAdminConsole')
         'Users/active': !!$scope.user.active,
         'Users/admin': !!$scope.user.admin
       }).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();
         $location.path(targetUrl);
       }).catch(function(data) {
-        Alert.error('User creation error', data.data.message);
+        Alert.error($t('users.alerts.userCreationError'), data.data.message);
       });
     }
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
index de53265..bde9297 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
@@ -18,7 +18,8 @@
 'use strict';
 
 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.usersPerPage = 10;
   $scope.currentPage = 1;
@@ -53,16 +54,16 @@ angular.module('ambariAdminConsole')
   };
 
   $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.typeFilterOptions = [{ label: 'All', value: '*'}]
+  $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
     .concat(Object.keys(UserConstants.TYPES).map(function(key) {
       return {
-        label: UserConstants.TYPES[key].NAME,
+        label: $t(UserConstants.TYPES[key].LABEL_KEY),
         value: UserConstants.TYPES[key].VALUE
       };
     }));

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
index 5c75afc..9464225 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
@@ -18,7 +18,9 @@
 'use strict';
 
 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(){
     User.get($routeParams.id).then(function(data) {
@@ -56,13 +58,13 @@ angular.module('ambariAdminConsole')
     // Remove user from groups
     angular.forEach(diff.del, function(groupName) {
       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
     angular.forEach(diff.add, function(groupName) {
       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() {
@@ -111,16 +113,24 @@ angular.module('ambariAdminConsole')
 
     modalInstance.result.then(function(data) {
       User.setPassword($scope.user, data.password, data.currentUserPassword).then(function() {
-        Alert.success('Password changed.');
+        Alert.success($t('users.alerts.passwordChanged'));
       }).catch(function(data) {
-        Alert.error('Cannot change password', data.data.message);
+        Alert.error($t('users.alerts.cannotChangePassword'), data.data.message);
       });
     }); 
   };
 
   $scope.toggleUserActive = function() {
     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);
       })
       .catch(function() {
@@ -130,13 +140,14 @@ angular.module('ambariAdminConsole')
   };    
   $scope.toggleUserAdmin = function() {
     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)
         .then(function() {
           loadPrivileges();
@@ -145,12 +156,20 @@ angular.module('ambariAdminConsole')
       .catch(function() {
         $scope.user.admin = !$scope.user.admin;
       });
-        
+
     }
-  };    
+  };
 
   $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() {
         $location.path('/users');
       });
@@ -181,12 +200,12 @@ angular.module('ambariAdminConsole')
 
       $scope.privileges = data.data.items.length ? privileges : null;
       $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
-      $scope.noViewPriv = $.isEmptyObject(privileges.views)
+      $scope.noViewPriv = $.isEmptyObject(privileges.views);
       $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
       $scope.dataLoaded = true;
 
     }).catch(function(data) {
-      Alert.error('Cannot load privileges', data.data.message);
+      Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
     });
   }
   loadPrivileges();

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js
index 18fb7a8..4b57edc 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/editableList.js
@@ -37,12 +37,12 @@ angular.module('ambariAdminConsole')
       };
 
       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 (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
         else if (!!navigator.userAgent.match(/Trident\/7\./))
@@ -232,7 +232,7 @@ angular.module('ambariAdminConsole')
         }
         if( $scope.editMode && !angular.equals($scope.items, $scope.itemsSource)){
           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) {
               $scope.save = function() {
                 $modalInstance.close('save');

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
index a2ead48..cc1ca26 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
@@ -22,7 +22,280 @@ angular.module('ambariAdminConsole')
   $translateProvider.translations('en',{
     'CLUSTER.ADMINISTRATOR': 'Operator',
     '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');

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js
index 09a3e2a..7ba4fab 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Alert.js
+++ b/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>');
     }
 
-    $('<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)
       .on('click', function() {
         var $box = $(this).closest('.ambariAlert');

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js
index 0e96fbe..4576a40 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/ConfirmationModal.js
@@ -18,7 +18,9 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.factory('ConfirmationModal', ['$modal', '$q', function($modal, $q) {
+.factory('ConfirmationModal', ['$modal', '$q', '$translate', function($modal, $q, $translate) {
+
+  var $t = $translate.instant;
 
 	return {
 		show: function(header, body, confirmText, cancelText) {
@@ -31,8 +33,8 @@ angular.module('ambariAdminConsole')
           $scope.isTempalte = !!body.url;
 					$scope.body = body;
           $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() {
 						$modalInstance.close();

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
index d37c714..ffed3cc 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
@@ -18,20 +18,21 @@
 'use strict';
 
 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
@@ -199,7 +200,7 @@ angular.module('ambariAdminConsole')
     },
 
     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();
       $http.get(url, {mock: 'stack/operatingSystems.json'})
       .success(function (data) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js
index 63ad9b2..a4d5e80 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UnsavedDialog.js
@@ -22,7 +22,7 @@ angular.module('ambariAdminConsole')
 
 	return function(){
 		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) {
         $scope.save = function() {
           $modalInstance.close('save');

http://git-wip-us.apache.org/repos/asf/ambari/blob/764fda9a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js
index d7cd451..da63c6d 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/UserConstants.js
@@ -24,15 +24,15 @@ angular.module('ambariAdminConsole').constant('UserConstants', {
   TYPES: {
     LOCAL: {
       VALUE: 'LOCAL',
-      NAME: 'Local'
+      LABEL_KEY: 'common.local'
     },
     LDAP: {
       VALUE: 'LDAP',
-      NAME: 'LDAP'
+      LABEL_KEY: 'common.ldap'
     },
     JWT: {
       VALUE: 'JWT',
-      NAME: 'JWT'
+      LABEL_KEY: 'common.jwt'
     }
   }
 });