Please confirm that you would like to remove ${entry.name} access from the team ${$filter('sanitize')(entry.team_name)}. This will affect all members of the team. If you would like to only remove access for this particular user, please remove them from the team.
Are you sure you want to remove the following user from this organization?
' + $filter('sanitize')(name) + '
',
+ hdr: i18n._('Delete'),
+ body: `
${i18n._('Are you sure you want to remove the following user from this organization?')}
` + $filter('sanitize')(name) + '
',
action: action,
- actionText: 'DELETE'
+ actionText: i18n._('DELETE')
});
};
diff --git a/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js b/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js
index 33dbc25983..877676af62 100644
--- a/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js
+++ b/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js
@@ -57,13 +57,13 @@ let lists = [{
return qs.search(path, $stateParams.user_search);
}
],
- OrgUserList: ['UserList', 'GetBasePath', '$stateParams', function(UserList, GetBasePath, $stateParams) {
+ OrgUserList: ['UserList', 'GetBasePath', '$stateParams', 'i18n', function(UserList, GetBasePath, $stateParams, i18n) {
let list = _.cloneDeep(UserList);
delete list.actions.add;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/users`;
list.searchRowActions = {
add: {
- awToolTip: 'Add existing user to organization',
+ awToolTip: i18n._('Add existing user to organization'),
actionClass: 'at-Button--add',
actionId: 'button-add',
ngClick: 'addUsers()'
@@ -101,14 +101,14 @@ let lists = [{
features: ['FeaturesService', function(FeaturesService) {
return FeaturesService.get();
}],
- OrgTeamList: ['TeamList', 'GetBasePath', '$stateParams', function(TeamList, GetBasePath, $stateParams) {
+ OrgTeamList: ['TeamList', 'GetBasePath', '$stateParams', 'i18n', function(TeamList, GetBasePath, $stateParams, i18n) {
let list = _.cloneDeep(TeamList);
delete list.actions.add;
// @issue Why is the delete action unavailable in this view?
delete list.fieldActions.delete;
- list.listTitle = N_('Teams') + ` | {{ name }}`;
+ list.listTitle = i18n._('Teams') + ` | {{ name }}`;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/teams`;
- list.emptyListText = `${N_('This list is populated by teams added from the')} ${N_('Teams')} ${N_('section')}`;
+ list.emptyListText = `${i18n._('This list is populated by teams added from the')} ${N_('Teams')} ${N_('section')}`;
return list;
}],
OrgTeamsDataset: ['OrgTeamList', 'QuerySet', '$stateParams', 'GetBasePath',
@@ -147,15 +147,15 @@ let lists = [{
features: ['FeaturesService', function(FeaturesService) {
return FeaturesService.get();
}],
- OrgInventoryList: ['InventoryList', 'GetBasePath', '$stateParams', function(InventoryList, GetBasePath, $stateParams) {
+ OrgInventoryList: ['InventoryList', 'GetBasePath', '$stateParams', 'i18n', function(InventoryList, GetBasePath, $stateParams, i18n) {
let list = _.cloneDeep(InventoryList);
delete list.actions.add;
// @issue Why is the delete action unavailable in this view?
delete list.fieldActions.delete;
list.title = true;
- list.listTitle = N_('Inventories') + ` | {{ name }}`;
+ list.listTitle = i18n._('Inventories') + ` | {{ name }}`;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/inventories`;
- list.emptyListText = `${N_("This list is populated by inventories added from the")} ${N_("Inventories")} ${N_("section")}`;
+ list.emptyListText = `${i18n._("This list is populated by inventories added from the")} ${N_("Inventories")} ${N_("section")}`;
return list;
}],
OrgInventoryDataset: ['OrgInventoryList', 'QuerySet', '$stateParams', 'GetBasePath',
@@ -199,14 +199,14 @@ let lists = [{
features: ['FeaturesService', function(FeaturesService) {
return FeaturesService.get();
}],
- OrgProjectList: ['ProjectList', 'GetBasePath', '$stateParams', function(ProjectList, GetBasePath, $stateParams) {
+ OrgProjectList: ['ProjectList', 'GetBasePath', '$stateParams', 'i18n', function(ProjectList, GetBasePath, $stateParams, i18n) {
let list = _.cloneDeep(ProjectList);
delete list.actions;
// @issue Why is the delete action unavailable in this view?
delete list.fieldActions.delete;
- list.listTitle = N_('Projects') + ` | {{ name }}`;
+ list.listTitle = i18n._('Projects') + ` | {{ name }}`;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/projects`;
- list.emptyListText = `${N_("This list is populated by projects added from the")} ${N_("Projects")} ${N_("section")}`;
+ list.emptyListText = `${i18n._("This list is populated by projects added from the")} ${N_("Projects")} ${N_("section")}`;
return list;
}],
OrgProjectDataset: ['OrgProjectList', 'QuerySet', '$stateParams', 'GetBasePath',
@@ -267,18 +267,18 @@ let lists = [{
return qs.search(path, $stateParams[`user_search`]);
}
],
- OrgAdminList: ['UserList', 'GetBasePath', '$stateParams', function(UserList, GetBasePath, $stateParams) {
+ OrgAdminList: ['UserList', 'GetBasePath', '$stateParams', 'i18n', function(UserList, GetBasePath, $stateParams, i18n) {
let list = _.cloneDeep(UserList);
delete list.actions.add;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/admins`;
list.searchRowActions = {
add: {
- awToolTip: 'Add existing user to organization as administrator',
+ awToolTip: i18n._('Add existing user to organization as administrator'),
actionClass: 'at-Button--add',
ngClick: 'addUsers()'
}
};
- list.listTitle = N_('Admins') + ` | {{ name }}`;
+ list.listTitle = i18n._('Admins') + ` | {{ name }}`;
return list;
}]
}
diff --git a/awx/ui/client/src/organizations/organizations.form.js b/awx/ui/client/src/organizations/organizations.form.js
index 3c58fa5aa7..56cfbebeae 100644
--- a/awx/ui/client/src/organizations/organizations.form.js
+++ b/awx/ui/client/src/organizations/organizations.form.js
@@ -130,7 +130,7 @@ export default ['NotificationsList', 'i18n',
actions: {
add: {
ngClick: "$state.go('.add')",
- label: 'Add',
+ label: i18n._('Add'),
awToolTip: i18n._('Add a permission'),
actionClass: 'at-Button--add',
actionId: 'button-add',
diff --git a/awx/ui/client/src/projects/projects.form.js b/awx/ui/client/src/projects/projects.form.js
index a4daadd52d..d8a5b2d3fd 100644
--- a/awx/ui/client/src/projects/projects.form.js
+++ b/awx/ui/client/src/projects/projects.form.js
@@ -251,7 +251,7 @@ export default ['i18n', 'NotificationsList', 'TemplateList',
actions: {
add: {
ngClick: "$state.go('.add')",
- label: 'Add',
+ label: i18n._('Add'),
awToolTip: i18n._('Add a permission'),
actionClass: 'at-Button--add',
actionId: 'button-add',
diff --git a/awx/ui/client/src/scheduler/factories/delete-schedule.factory.js b/awx/ui/client/src/scheduler/factories/delete-schedule.factory.js
index d4526cab8b..f766fe083c 100644
--- a/awx/ui/client/src/scheduler/factories/delete-schedule.factory.js
+++ b/awx/ui/client/src/scheduler/factories/delete-schedule.factory.js
@@ -1,6 +1,6 @@
export default
function DeleteSchedule(GetBasePath, Rest, Wait, $state,
- ProcessErrors, Prompt, Find, $location, $filter) {
+ ProcessErrors, Prompt, Find, $location, $filter, i18n) {
return function(params) {
var scope = params.scope,
id = params.id,
@@ -55,9 +55,9 @@ export default
Prompt({
hdr: hdr,
resourceName: $filter('sanitize')(schedule.name),
- body: '
Are you sure you want to delete this schedule?
',
+ body: `
${i18n._('Are you sure you want to delete this schedule?')}
`,
action: action,
- actionText: 'DELETE',
+ actionText: i18n._('DELETE'),
backdrop: false
});
};
@@ -66,5 +66,5 @@ export default
DeleteSchedule.$inject =
[ 'GetBasePath','Rest', 'Wait', '$state',
'ProcessErrors', 'Prompt', 'Find', '$location',
- '$filter'
+ '$filter', 'i18n'
];
diff --git a/awx/ui/client/src/scheduler/scheduler.strings.js b/awx/ui/client/src/scheduler/scheduler.strings.js
index 95b66edfdf..b32b4289b9 100644
--- a/awx/ui/client/src/scheduler/scheduler.strings.js
+++ b/awx/ui/client/src/scheduler/scheduler.strings.js
@@ -56,7 +56,12 @@ function SchedulerStrings (BaseString) {
CANCEL: t.s('Cancel'),
SAVE: t.s('Save'),
WARNING: t.s('Warning'),
- CREDENTIAL_REQUIRES_PASSWORD_WARNING: t.s('This Job Template has a default credential that requires a password before launch. Adding or editing schedules is prohibited while this credential is selected. To add or edit a schedule, credentials that require a password must be removed from the Job Template.')
+ CREDENTIAL_REQUIRES_PASSWORD_WARNING: t.s('This Job Template has a default credential that requires a password before launch. Adding or editing schedules is prohibited while this credential is selected. To add or edit a schedule, credentials that require a password must be removed from the Job Template.'),
+ SCHEDULE_NAME: t.s('Schedule name'),
+ HH24: t.s('HH24'),
+ MM: t.s('MM'),
+ SS: t.s('SS'),
+ DAYS_DATA: t.s('Days of data to keep')
};
ns.prompt = {
diff --git a/awx/ui/client/src/scheduler/schedulerForm.partial.html b/awx/ui/client/src/scheduler/schedulerForm.partial.html
index 586a04456f..900b24f941 100644
--- a/awx/ui/client/src/scheduler/schedulerForm.partial.html
+++ b/awx/ui/client/src/scheduler/schedulerForm.partial.html
@@ -29,7 +29,7 @@
id="schedulerName"
ng-model="schedulerName" required
ng-disabled="!(schedule_obj.summary_fields.user_capabilities.edit || canAdd) || credentialRequiresPassword"
- placeholder="Schedule name">
+ placeholder="{{strings.get('form.SCHEDULE_NAME')}}">
-
+
\ No newline at end of file
diff --git a/awx/ui/client/src/shared/form-generator.js b/awx/ui/client/src/shared/form-generator.js
index e9042bc572..4ba0f3890a 100644
--- a/awx/ui/client/src/shared/form-generator.js
+++ b/awx/ui/client/src/shared/form-generator.js
@@ -1857,7 +1857,7 @@ angular.module('FormGenerator', [GeneratorHelpers.name, 'Utilities', listGenerat
html += `
- System Administrators have access to all ${collection.iterator}s
+ ${i18n._('System Administrators have access to all ' + collection.iterator + 's')}
`;
@@ -1883,7 +1883,7 @@ angular.module('FormGenerator', [GeneratorHelpers.name, 'Utilities', listGenerat
`;
}
if (collection.fieldActions) {
- html += `
Please remove the illegal character from the survey question variable name.
'+
- '
This question variable is already in use. Please enter a different variable name.
' +
+ '
' + i18n._('Please enter an answer variable name.') + '
'+
+ '
' + i18n._('Please remove the illegal character from the survey question variable name.') + '
'+
+ '
' + i18n._('This question variable is already in use. Please enter a different variable name.') + '
' +
''+
'
',
awPopOver: i18n._("The suggested format for variable names is lowercase and underscore-separated (for example, foo_bar, user_id, host_name, etc.). Variable names with spaces are not allowed."),
@@ -89,15 +89,15 @@ export default ['i18n', function(i18n){
type: 'custom',
control:'
'+
'
'+
- 'Minimum Length'+
- '
The minimum length you entered is not a valid number. Please enter a whole number.
'+
- '
The minimium length is too high. Please enter a lower number.
'+
- '
The minimum length is too low. Please enter a positive number.
'+
+ '' + i18n._('Minimum Length') + ''+
+ '
' + i18n._('The minimum length you entered is not a valid number. Please enter a whole number.') + '
'+
+ '
' + i18n._('The minimium length is too high. Please enter a lower number.') + '
'+
+ '
' + i18n._('The minimum length is too low. Please enter a positive number.') + '
'+
'
'+
'
'+
- 'Maximum Length'+
- '
The maximum length you entered is not a valid number. Please enter a whole nnumber.
'+
- '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+
+ '' + i18n._('Maximum Length') + ''+
+ '
' + i18n._('The maximum length you entered is not a valid number. Please enter a whole nnumber.') + '
'+
+ '
' + i18n._('The maximum length is too low. Please enter a number larger than the minimum length you set.') + '