diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 52c09ded9e..c4f1f89120 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -312,7 +312,7 @@ var tower = angular.module('Tower', [ }, ncyBreadcrumb: { parent: 'setup', - label: 'CREDENTIALS' + label: N_('CREDENTIALS') } }) }); @@ -336,7 +336,7 @@ var tower = angular.module('Tower', [ }, ncyBreadcrumb: { parent: 'setup', - label: 'TEAMS' + label: N_('TEAMS') } }) }); @@ -360,7 +360,7 @@ var tower = angular.module('Tower', [ }, ncyBreadcrumb: { parent: 'setup', - label: 'USERS' + label: N_('USERS') } }) }); @@ -500,7 +500,7 @@ var tower = angular.module('Tower', [ templateUrl: urlPrefix + 'partials/sockets.html', controller: SocketsController, ncyBreadcrumb: { - label: 'SOCKETS' + label: N_('SOCKETS') } }); diff --git a/awx/ui/client/src/controllers/Projects.js b/awx/ui/client/src/controllers/Projects.js index f8f2d74886..045fc3ff12 100644 --- a/awx/ui/client/src/controllers/Projects.js +++ b/awx/ui/client/src/controllers/Projects.js @@ -45,7 +45,7 @@ export function ProjectsList($scope, $rootScope, $location, $log, $stateParams, function buildTooltips(project) { project.statusIcon = GetProjectIcon(project.status); project.statusTip = GetProjectToolTip(project.status); - project.scm_update_tooltip = "Start an SCM update"; + project.scm_update_tooltip = i18n._("Start an SCM update"); project.scm_schedule_tooltip = i18n._("Schedule future SCM updates"); project.scm_type_class = ""; @@ -153,13 +153,13 @@ export function ProjectsList($scope, $rootScope, $location, $log, $stateParams, }) .error(function (data, status) { ProcessErrors($scope, data, status, null, { hdr: i18n._('Error!'), - msg: i18n.format(i18n._('Call to %s failed. DELETE returned status: '), url) + status }); + msg: i18n.sprintf(i18n._('Call to %s failed. DELETE returned status: '), url) + status }); }); }; Prompt({ hdr: i18n._('Delete'), - body: i18n._('
Example URLs for GIT SCM include:
' + + i18n._('Example URLs for GIT SCM include:') + + '
Note: When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, ' + + '
' + i18n.sprintf(i18n._('%sNote:%s When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, ' + 'do not enter a username (other than git). Additionally, GitHub and Bitbucket do not support password authentication when using ' + - 'SSH. GIT read only protocol (git://) does not use username or password information.'); + 'SSH. GIT read only protocol (git://) does not use username or password information.'), '', ''); break; case 'svn': - $scope.urlPopover = i18n._('
Example URLs for Subversion SCM include:
' + + $scope.urlPopover = '' + i18n._('Example URLs for Subversion SCM include:') + '
' + 'Example URLs for Mercurial SCM include:
' + + $scope.urlPopover = '' + i18n._('Example URLs for Mercurial SCM include:') + '
' + 'Note: Mercurial does not support password authentication for SSH. ' + + '
' + i18n.sprintf(i18n._('%sNote:%s Mercurial does not support password authentication for SSH. ' + 'Do not put the username and key in the URL. ' + - 'If using Bitbucket and SSH, do not supply your Bitbucket username.'); + 'If using Bitbucket and SSH, do not supply your Bitbucket username.'), '', ''); break; default: - $scope.urlPopover = i18n._('
URL popover text'); + $scope.urlPopover = '
' + i18n._('URL popover text'); } } @@ -535,14 +537,14 @@ export function ProjectsEdit($scope, $rootScope, $compile, $location, $log, }); $scope.scmBranchLabel = ($scope.scm_type.value === 'svn') ? 'Revision #' : 'SCM Branch'; - $scope.scm_update_tooltip = "Start an SCM update"; + $scope.scm_update_tooltip = i18n._("Start an SCM update"); $scope.scm_type_class = ""; if (data.status === 'running' || data.status === 'updating') { - $scope.scm_update_tooltip = "SCM update currently running"; + $scope.scm_update_tooltip = i18n._("SCM update currently running"); $scope.scm_type_class = "btn-disabled"; } if (Empty(data.scm_type)) { - $scope.scm_update_tooltip = 'Manual projects do not require an SCM update'; + $scope.scm_update_tooltip = i18n._('Manual projects do not require an SCM update'); $scope.scm_type_class = "btn-disabled"; } @@ -641,7 +643,7 @@ export function ProjectsEdit($scope, $rootScope, $compile, $location, $log, Prompt({ hdr: i18n._('Delete'), - body: i18n.format(i18n._('
Example URLs for GIT SCM include:
' + i18n._('Example URLs for GIT SCM include:') + '
Note: When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, ' + + '
' + i18n.sprintf(i18n._('%sNote:%s When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, ' + 'do not enter a username (other than git). Additionally, GitHub and Bitbucket do not support password authentication when using ' + - 'SSH. GIT read only protocol (git://) does not use username or password information.'); + 'SSH. GIT read only protocol (git://) does not use username or password information.'), '', ''); break; case 'svn': - $scope.urlPopover = i18n._('
Example URLs for Subversion SCM include:
' + + $scope.urlPopover = '' + i18n._('Example URLs for Subversion SCM include:') + '
' + 'Example URLs for Mercurial SCM include:
' + + $scope.urlPopover = '' + i18n._('Example URLs for Mercurial SCM include:') + '
' + 'Note: Mercurial does not support password authentication for SSH. ' + + '
' + i18n.sprintf(i18n._('%sNote:%s Mercurial does not support password authentication for SSH. ' + 'Do not put the username and key in the URL. ' + - 'If using Bitbucket and SSH, do not supply your Bitbucket username.'); + 'If using Bitbucket and SSH, do not supply your Bitbucket username.'), '', ''); break; default: - $scope.urlPopover = i18n._('
URL popover text'); + $scope.urlPopover = '
' + i18n._('URL popover text'); } } }; diff --git a/awx/ui/client/src/forms/Credentials.js b/awx/ui/client/src/forms/Credentials.js index 9ba77799ce..42fae2c82f 100644 --- a/awx/ui/client/src/forms/Credentials.js +++ b/awx/ui/client/src/forms/Credentials.js @@ -51,7 +51,7 @@ export default list: 'OrganizationList', sourceModel: 'organization', sourceField: 'name', - awPopOver: i18n._("
If no organization is given, the credential can only be used by the user that creates the credential. Organization admins and system administrators can assign an organization so that roles for the credential can be assigned to users and teams in that organization.
"), + awPopOver: "" + i18n._("If no organization is given, the credential can only be used by the user that creates the credential. Organization admins and system administrators can assign an organization so that roles for the credential can be assigned to users and teams in that organization.") + "
", dataTitle: i18n._('Organization') + ' ', dataPlacement: 'bottom', dataContainer: "body", @@ -64,24 +64,24 @@ export default ngOptions: 'kind.label for kind in credential_kind_options track by kind.value', // select as label for value in array 'kind.label for kind in credential_kind_options', ngChange: 'kindChange()', required: true, - awPopOver: i18n._('Subscription ID is an Azure construct, which is mapped to a username.
'), + awPopOver: '' + i18n._('Subscription ID is an Azure construct, which is mapped to a username.') + '
', dataTitle: i18n._('Subscription ID'), dataPlacement: 'right', dataContainer: "body", @@ -187,7 +188,7 @@ export default init: false }, autocomplete: false, - awPopOver: i18n._('The email address assigned to the Google Compute Engine service account.
'), + awPopOver: '' + i18n.sprintf(i18n._('The email address assigned to the Google Compute Engine %sservice account.'), '') + '
', dataTitle: i18n._('Email'), dataPlacement: 'right', dataContainer: "body", @@ -281,9 +282,10 @@ export default ngShow: "kind.value == 'ssh'", dataTitle: i18n._('Privilege Escalation'), ngOptions: 'become.label for become in become_options track by become.value', - awPopOver: i18n._("Specify a method for 'become' operations. " + + // i18n.sprintf() does not support the order of multiple "%s" + awPopOver: "
" + i18n.sprintf(i18n._("Specify a method for 'become' operations. " +
"This is equivalent to specifying the --become-method=BECOME_METHOD parameter, where BECOME_METHOD could be "+
- "sudo | su | pbrun | pfexec | runas
(defaults to sudo)
sudo | su | pbrun | pfexec | runas") + " sudo") + "",
dataPlacement: 'right',
dataContainer: "body",
subForm: 'credentialSubForm',
@@ -373,11 +375,11 @@ export default
labelBind: 'domainLabel',
type: 'text',
ngShow: "kind.value == 'openstack'",
- awPopOver: i18n._("OpenStack domains define administrative " + + awPopOver: "
" + i18n._("OpenStack domains define administrative " + "boundaries. It is only needed for Keystone v3 authentication URLs. " + - "Common scenarios include:
Enter inventory variables using either JSON or YAML syntax. Use the radio button to toggle between the two.
" + + awPopOver: "" + i18n._("Enter inventory variables using either JSON or YAML syntax. Use the radio button to toggle between the two.") + "
" + "JSON:{\n" + "YAML:
\"somevar\": \"somevalue\",
\"password\": \"magic\"
}
---\n" + - '
somevar: somevalue
password: magic
View JSON examples at www.json.org
' + - 'View YAML examples at docs.ansible.com
', - dataTitle: 'Inventory Variables', + '' + i18n.sprintf(i18n._('View JSON examples at %s'), 'www.json.org') + '
' + + '' + i18n.sprintf(i18n._('View YAML examples at %s'), 'docs.ansible.com') + '
', + dataTitle: i18n._('Inventory Variables'), dataPlacement: 'right', dataContainer: 'body', ngDisabled: '!(inventory_obj.summary_fields.user_capabilities.edit || canAdd)' // TODO: get working @@ -150,7 +150,7 @@ angular.module('InventoryFormDefinition', ['ScanJobsListDefinition']) label: i18n._('Add'), awToolTip: i18n._('Add a permission'), actionClass: 'btn List-buttonSubmit', - buttonContent: i18n._('+ ADD'), + buttonContent: '+ ' + i18n._('ADD'), ngShow: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)' } }, diff --git a/awx/ui/client/src/forms/JobTemplates.js b/awx/ui/client/src/forms/JobTemplates.js index 00f4c5f131..7c3d3c4702 100644 --- a/awx/ui/client/src/forms/JobTemplates.js +++ b/awx/ui/client/src/forms/JobTemplates.js @@ -51,10 +51,13 @@ export default "default": 0, required: true, column: 1, - awPopOver: i18n._("When this template is submitted as a job, setting the type to run will execute the playbook, running tasks " + - " on the selected hosts.
Setting the type to check will not execute the playbook. Instead, ansible will check playbook " +
- " syntax, test environment setup and report problems.
Setting the type to scan will execute the playbook and store any " + - " scanned facts for use with Tower's System Tracking feature.
"), + awPopOver: "" + i18n._("When this template is submitted as a job, setting the type to run will execute the playbook, running tasks " + + " on the selected hosts.") + "
" +
+ i18n.sprintf(i18n._("Setting the type to %scheck%s will not execute the playbook."), "", "") + " " +
+ i18n.sprintf(i18n._("Instead, %s will check playbook " +
+ " syntax, test environment setup and report problems."), "ansible") + "
" + + i18n.sprintf(i18n._("Setting the type to %sscan%s will execute the playbook and store any " + + " scanned facts for use with Tower's System Tracking feature."), "", "") + "
", dataTitle: i18n._('Job Type'), dataPlacement: 'right', dataContainer: "body", @@ -78,7 +81,7 @@ export default }, requiredErrorMsg: "Please select an Inventory or check the Prompt on launch option.", column: 1, - awPopOver: i18n._("Select the inventory containing the hosts you want this job to manage.
"), + awPopOver: "" + i18n._("Select the inventory containing the hosts you want this job to manage.") + "
", dataTitle: i18n._('Inventory'), dataPlacement: 'right', dataContainer: "body", @@ -106,7 +109,7 @@ export default init: "true" }, column: 1, - awPopOver: i18n._("Select the project containing the playbook you want this job to execute.
"), + awPopOver: "" + i18n._("Select the project containing the playbook you want this job to execute.") + "
", dataTitle: i18n._('Project'), dataPlacement: 'right', dataContainer: "body", @@ -123,7 +126,7 @@ export default init: "true" }, column: 1, - awPopOver: i18n._("Select the playbook to be executed by this job.
"), + awPopOver: "" + i18n._("Select the playbook to be executed by this job.") + "
", dataTitle: i18n._('Playbook'), dataPlacement: 'right', dataContainer: "body", @@ -145,8 +148,8 @@ export default }, requiredErrorMsg: "Please select a Machine Credential or check the Prompt on launch option.", column: 1, - awPopOver: i18n._("Select the credential you want the job to use when accessing the remote hosts. Choose the credential containing " + - " the username and SSH key or password that Ansible will need to log into the remote hosts.
"), + awPopOver: "" + i18n._("Select the credential you want the job to use when accessing the remote hosts. Choose the credential containing " + + " the username and SSH key or password that Ansible will need to log into the remote hosts.") + "
", dataTitle: i18n._('Credential'), dataPlacement: 'right', dataContainer: "body", @@ -167,8 +170,8 @@ export default sourceModel: 'cloud_credential', sourceField: 'name', column: 1, - awPopOver: i18n._("Selecting an optional cloud credential in the job template will pass along the access credentials to the " + - "running playbook, allowing provisioning into the cloud without manually passing parameters to the included modules.
"), + awPopOver:"" + i18n._("Selecting an optional cloud credential in the job template will pass along the access credentials to the " + + "running playbook, allowing provisioning into the cloud without manually passing parameters to the included modules.") + "
", dataTitle: i18n._('Cloud Credential'), dataPlacement: 'right', dataContainer: "body", @@ -185,7 +188,7 @@ export default sourceModel: 'network_credential', sourceField: 'name', column: 1, - awPopOver: i18n._("Network credentials are used by Ansible networking modules to connect to and manage networking devices.
"), + awPopOver: "" + i18n._("Network credentials are used by Ansible networking modules to connect to and manage networking devices.") + "
", dataTitle: i18n._('Network Credential'), dataPlacement: 'right', dataContainer: "body", @@ -201,9 +204,10 @@ export default "default": '0', 'class': "input-small", column: 1, - awPopOver: i18n._('The number of parallel or simultaneous processes to use while executing the playbook. 0 signifies ' + - 'the default value from the ansible configuration file.
'), + awPopOver: '' + i18n.sprintf(i18n._('The number of parallel or simultaneous processes to use while executing the playbook. 0 signifies ' + + 'the default value from the %sansible configuration file%s.'), '' + + '', '') +'
', dataTitle: i18n._('Forks'), dataPlacement: 'right', dataContainer: "body", @@ -213,9 +217,10 @@ export default label: i18n._('Limit'), type: 'text', column: 1, - awPopOver: i18n._("Provide a host pattern to further constrain the list of hosts that will be managed or affected by the playbook. " + - "Multiple patterns can be separated by ; : or ,
For more information and examples see " + - "the Patterns topic at docs.ansible.com.
"), + awPopOver: "" + i18n.sprintf(i18n._("Provide a host pattern to further constrain the list of hosts that will be managed or affected by the playbook. " + + "Multiple patterns can be separated by %s %s or %s"), ";", ":", ",") + "
" + + i18n.sprintf(i18n._("For more information and examples see " + + "%sthe Patterns topic at docs.ansible.com%s."), "", "") + "
", dataTitle: i18n._('Limit'), dataPlacement: 'right', dataContainer: "body", @@ -232,7 +237,7 @@ export default "default": 1, required: true, column: 1, - awPopOver: i18n._("Control the level of output ansible will produce as the playbook executes.
"), + awPopOver: "" + i18n._("Control the level of output ansible will produce as the playbook executes.") + "
", dataTitle: i18n._('Verbosity'), dataPlacement: 'right', dataContainer: "body", @@ -244,9 +249,9 @@ export default rows: 5, 'elementClass': 'Form-textInput', column: 2, - awPopOver: i18n._("Provide a comma separated list of tags.
\n" + - "Tags are useful when you have a large playbook, and you want to run a specific part of a play or task.
" + - "Consult the Ansible documentation for further details on the usage of tags.
"), + awPopOver: "" + i18n._("Provide a comma separated list of tags.") + "
\n" + + "" + i18n._("Tags are useful when you have a large playbook, and you want to run a specific part of a play or task.") + "
" + + "" + i18n._("Consult the Ansible documentation for further details on the usage of tags.") + "
", dataTitle: i18n._("Job Tags"), dataPlacement: "right", dataContainer: "body", @@ -262,9 +267,9 @@ export default rows: 5, 'elementClass': 'Form-textInput', column: 2, - awPopOver: i18n._("Provide a comma separated list of tags.
\n" + - "Skip tags are useful when you have a large playbook, and you want to skip specific parts of a play or task.
" + - "Consult the Ansible documentation for further details on the usage of tags.
"), + awPopOver: "" + i18n._("Provide a comma separated list of tags.") + "
\n" + + "" + i18n._("Skip tags are useful when you have a large playbook, and you want to skip specific parts of a play or task.") + "
" + + "" + i18n._("Consult the Ansible documentation for further details on the usage of tags.") + "
", dataTitle: i18n._("Skip Tags"), dataPlacement: "right", dataContainer: "body", @@ -282,7 +287,7 @@ export default label: i18n._('Enable Privilege Escalation'), type: 'checkbox', column: 2, - awPopOver: i18n._("If enabled, run this playbook as an administrator. This is the equivalent of passing the --become option to the ansible-playbook command.
" + i18n.sprintf(i18n._("If enabled, run this playbook as an administrator. This is the equivalent of passing the %s option to the %s command."), '--become', 'ansible-playbook') + "
Enables creation of a provisioning callback URL. Using the URL a host can contact Tower and request a configuration update " + - "using this job template.
"), + awPopOver: "" + i18n._("Enables creation of a provisioning callback URL. Using the URL a host can contact Tower and request a configuration update " + + "using this job template.") + "
", dataPlacement: 'right', dataTitle: i18n._('Allow Provisioning Callbacks'), dataContainer: "body", @@ -338,7 +343,7 @@ export default multiSelect: true, dataTitle: i18n._('Labels'), dataPlacement: 'right', - awPopOver: i18n._("Optional labels that describe this job template, such as 'dev' or 'test'. Labels can be used to group and filter job templates and completed jobs in the Tower display.
"), + awPopOver: "" + i18n._("Optional labels that describe this job template, such as 'dev' or 'test'. Labels can be used to group and filter job templates and completed jobs in the Tower display.") + "
", dataContainer: 'body', ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate)' }, @@ -349,12 +354,12 @@ export default rows: 6, "default": "---", column: 2, - awPopOver: i18n._("Pass extra command line variables to the playbook. This is the -e or --extra-vars command line parameter " +
- "for ansible-playbook. Provide key/value pairs using either YAML or JSON.
" + i18n.sprintf(i18n._("Pass extra command line variables to the playbook. This is the %s or %s command line parameter " +
+ "for %s. Provide key/value pairs using either YAML or JSON."), '-e', '--extra-vars', 'ansible-playbook') + "
{\n" + "YAML:
\"somevar\": \"somevalue\",
\"password\": \"magic\"
}
---\n"), + "
somevar: somevalue
password: magic
---\n", dataTitle: i18n._('Extra Variables'), dataPlacement: 'right', dataContainer: "body", diff --git a/awx/ui/client/src/forms/Organizations.js b/awx/ui/client/src/forms/Organizations.js index 5cadb65ce0..011ad90907 100644 --- a/awx/ui/client/src/forms/Organizations.js +++ b/awx/ui/client/src/forms/Organizations.js @@ -72,7 +72,7 @@ export default label: i18n._('Add'), awToolTip: i18n._('Add a permission'), actionClass: 'btn List-buttonSubmit', - buttonContent: i18n._('+ ADD'), + buttonContent: '+ ' + i18n._('ADD'), ngShow: '(organization_obj.summary_fields.user_capabilities.edit || canAdd)' } }, diff --git a/awx/ui/client/src/forms/Projects.js b/awx/ui/client/src/forms/Projects.js index 2dabbba6b4..a1d65a82d5 100644 --- a/awx/ui/client/src/forms/Projects.js +++ b/awx/ui/client/src/forms/Projects.js @@ -77,9 +77,9 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) class: 'Form-textUneditable', showonly: true, ngShow: "scm_type.value == 'manual' " , - awPopOver: i18n._('
somevar: somevalue
password: magic
Base path used for locating playbooks. Directories found inside this path will be listed in the playbook directory drop-down. ' + - 'Together the base path and selected playbook directory provide the full path used to locate playbooks.
' + - 'Use PROJECTS_ROOT in your environment settings file to determine the base path value.
'), + awPopOver: '' + i18n._('Base path used for locating playbooks. Directories found inside this path will be listed in the playbook directory drop-down. ' + + 'Together the base path and selected playbook directory provide the full path used to locate playbooks.') + '
' + + '' + i18n.sprintf(i18n._('Use %s in your environment settings file to determine the base path value.'), 'PROJECTS_ROOT') + '
', dataTitle: i18n._('Project Base Path'), dataContainer: 'body', dataPlacement: 'right', @@ -95,9 +95,9 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) init: false }, ngShow: "scm_type.value == 'manual' && !showMissingPlaybooksAlert", - awPopOver: i18n._('Select from the list of directories found in the base path.' + - 'Together the base path and the playbook directory provide the full path used to locate playbooks.
' + - 'Use PROJECTS_ROOT in your environment settings file to determine the base path value.
'), + awPopOver: '' + i18n._('Select from the list of directories found in the base path.' + + 'Together the base path and the playbook directory provide the full path used to locate playbooks.') + '
' + + '' + i18n.sprintf(i18n._('Use %s in your environment settings file to determine the base path value.'), 'PROJECTS_ROOT') + '
', dataTitle: i18n._('Project Path'), dataContainer: 'body', dataPlacement: 'right', @@ -151,7 +151,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) name: 'scm_clean', label: i18n._('Clean'), type: 'checkbox', - awPopOver: i18n._('Remove any local modifications prior to performing an update.
'), + awPopOver: '' + i18n._('Remove any local modifications prior to performing an update.') + '
', dataTitle: i18n._('SCM Clean'), dataContainer: 'body', dataPlacement: 'right', @@ -161,8 +161,8 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) name: 'scm_delete_on_update', label: i18n._('Delete on Update'), type: 'checkbox', - awPopOver: i18n._('Delete the local repository in its entirety prior to performing an update.
Depending on the size of the ' + - 'repository this may significantly increase the amount of time required to complete an update.
'), + awPopOver: '' + i18n._('Delete the local repository in its entirety prior to performing an update.') + '
' + i18n._('Depending on the size of the ' + + 'repository this may significantly increase the amount of time required to complete an update.') + '
', dataTitle: i18n._('SCM Delete'), dataContainer: 'body', dataPlacement: 'right', @@ -172,7 +172,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) name: 'scm_update_on_launch', label: i18n._('Update on Launch'), type: 'checkbox', - awPopOver: i18n._('Each time a job runs using this project, perform an update to the local repository prior to starting the job.
'), + awPopOver: '' + i18n._('Each time a job runs using this project, perform an update to the local repository prior to starting the job.') + '
', dataTitle: i18n._('SCM Update'), dataContainer: 'body', dataPlacement: 'right', @@ -181,7 +181,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) }] }, scm_update_cache_timeout: { - label: i18n._(`Cache Timeout (seconds)`), + label: i18n.sprintf(i18n._('Cache Timeout%s (seconds)%s'), '', ''), id: 'scm-cache-timeout', type: 'number', integer: true, @@ -189,9 +189,9 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) ngShow: "scm_update_on_launch && projectSelected && scm_type.value !== 'manual'", spinner: true, "default": '0', - awPopOver: i18n._('Time in seconds to consider a project to be current. During job runs and callbacks the task system will ' + + awPopOver: '
' + i18n._('Time in seconds to consider a project to be current. During job runs and callbacks the task system will ' + 'evaluate the timestamp of the latest project update. If it is older than Cache Timeout, it is not considered current, ' + - 'and a new project update will be performed.
'), + 'and a new project update will be performed.') + '', dataTitle: i18n._('Cache Timeout'), dataPlacement: 'right', dataContainer: "body", @@ -235,7 +235,7 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) label: 'Add', awToolTip: i18n._('Add a permission'), actionClass: 'btn List-buttonSubmit', - buttonContent: i18n._('+ ADD'), + buttonContent: '+ ' + i18n._('ADD'), ngShow: '(project_obj.summary_fields.user_capabilities.edit || canAdd)' } }, diff --git a/awx/ui/client/src/forms/Teams.js b/awx/ui/client/src/forms/Teams.js index d1507f28a0..a7f03a490b 100644 --- a/awx/ui/client/src/forms/Teams.js +++ b/awx/ui/client/src/forms/Teams.js @@ -83,7 +83,7 @@ export default label: 'Add', awToolTip: i18n._('Add user to team'), actionClass: 'btn List-buttonSubmit', - buttonContent: i18n._('+ ADD'), + buttonContent: '+ ' + i18n._('ADD'), ngShow: '(team_obj.summary_fields.user_capabilities.edit || canAdd)' } }, diff --git a/awx/ui/client/src/helpers/Credentials.js b/awx/ui/client/src/helpers/Credentials.js index f965ec2ac4..375a556be0 100644 --- a/awx/ui/client/src/helpers/Credentials.js +++ b/awx/ui/client/src/helpers/Credentials.js @@ -38,7 +38,7 @@ angular.module('CredentialsHelper', ['Utilities']) scope.key_required = false; // JT -- doing the same for key and project scope.project_required = false; scope.subscription_required = false; - scope.key_description = i18n._("Paste the contents of the SSH private key file."); + scope.key_description = i18n.sprintf(i18n._("Paste the contents of the SSH private key file.%s or click to close%s"), ""); scope.host_required = false; scope.password_required = false; scope.hostLabel = ''; @@ -71,8 +71,8 @@ angular.module('CredentialsHelper', ['Utilities']) scope.domainLabel = ''; scope.project_required = false; scope.passwordLabel = i18n._('Password (API Key)'); - scope.projectPopOver = i18n._("The project value
"); - scope.hostPopOver = i18n._("The host value
"); + scope.projectPopOver = "" + i18n._("The project value") + "
"; + scope.hostPopOver = "" + i18n._("The host value") + "
"; scope.ssh_key_data_api_error = ''; if (!Empty(scope.kind)) { // Apply kind specific settings @@ -102,10 +102,10 @@ angular.module('CredentialsHelper', ['Utilities']) scope.key_description = i18n._('Paste the contents of the PEM file associated with the service account email.'); scope.projectLabel = i18n._("Project"); scope.project_required = false; - scope.projectPopOver = i18n._("The Project ID is the " + + scope.projectPopOver = "
" + i18n._("The Project ID is the " + "GCE assigned identification. It is constructed as " + "two words followed by a three digit number. Such " + - "as:
adjective-noun-000
"); + "as: ") + "adjective-noun-000
"; break; case 'azure': scope.sshKeyDataLabel = i18n._('Management Certificate'); @@ -135,11 +135,11 @@ angular.module('CredentialsHelper', ['Utilities']) scope.project_required = true; scope.host_required = true; scope.username_required = true; - scope.projectPopOver = i18n._("This is the tenant name. " + + scope.projectPopOver = "
" + i18n._("This is the tenant name. " + " This value is usually the same " + - " as the username.
"); - scope.hostPopOver = i18n._("The host to authenticate with." +
- "
For example, https://openstack.business.com/v2.0/");
+ " as the username.") + "
" + i18n._("The host to authenticate with.") +
+ "
" + i18n.sprintf(i18n._("For example, %s"), "https://openstack.business.com/v2.0/");
break;
case 'satellite6':
scope.username_required = true;
@@ -147,8 +147,8 @@ angular.module('CredentialsHelper', ['Utilities'])
scope.passwordLabel = i18n._('Password');
scope.host_required = true;
scope.hostLabel = i18n._("Satellite 6 Host");
- scope.hostPopOver = i18n._("Enter the hostname or IP address name which
" +
- "corresponds to your Red Hat Satellite 6 server.");
+ scope.hostPopOver = i18n.sprintf(i18n._("Enter the hostname or IP address name which %s" +
+ "corresponds to your Red Hat Satellite 6 server."), "
");
break;
case 'cloudforms':
scope.username_required = true;
@@ -156,8 +156,8 @@ angular.module('CredentialsHelper', ['Utilities'])
scope.passwordLabel = i18n._('Password');
scope.host_required = true;
scope.hostLabel = i18n._("CloudForms Host");
- scope.hostPopOver = i18n._("Enter the hostname or IP address for the virtual
" +
- " machine which is hosting the CloudForm appliance.");
+ scope.hostPopOver = i18n.sprintf(i18n._("Enter the hostname or IP address for the virtual %s" +
+ " machine which is hosting the CloudForm appliance."), "
");
break;
case 'net':
scope.username_required = true;
diff --git a/awx/ui/client/src/i18n.js b/awx/ui/client/src/i18n.js
index 0b64a40222..9471e04616 100644
--- a/awx/ui/client/src/i18n.js
+++ b/awx/ui/client/src/i18n.js
@@ -1,16 +1,6 @@
/* jshint ignore:start */
-function isString(arg) {
- return typeof arg === 'string';
-}
-
-function isNull(arg) {
- return arg === null;
-}
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
+var sprintf = require('sprintf-js').sprintf;
/**
* @ngdoc method
@@ -24,55 +14,6 @@ export function N_(s) {
return s;
}
-// Copied format() from util/util.js. util.js includes "require()".
-/**
- * @ngdoc method
- * @name function:i18n#format
- * @methodOf function:format
- * @description this function provides C-style's formatted sprintf().
- *
-*/
-export function format(f) {
- var i;
- var formatRegExp = /%[sdj%]/g;
- if (!isString(f)) {
- var objects = [];
- for (i = 0; i < arguments.length; i++) {
- objects.push(JSON.stringify(arguments[i]));
- }
- return objects.join(' ');
- }
-
- i = 1;
- var args = arguments;
- var len = args.length;
- var str = String(f).replace(formatRegExp, function(x) {
- if (x === '%%') return '%';
- if (i >= len) return x;
- switch (x) {
- case '%s': return String(args[i++]);
- case '%d': return Number(args[i++]);
- case '%j':
- case '%j':
- try {
- return JSON.stringify(args[i++]);
- } catch (_) {
- return '[Circular]';
- }
- default:
- return x;
- }
- });
- for (var x = args[i]; i < len; x = args[++i]) {
- if (isNull(x) || !isObject(x)) {
- str += ' ' + x;
- } else {
- str += ' ' + JSON.stringify(x);
- }
- }
- return str;
-}
-
export default
angular.module('I18N', [])
.factory('I18NInit', ['$window', 'gettextCatalog',
@@ -94,7 +35,7 @@ export default
return {
_: function (s) { return gettextCatalog.getString (s); },
N_: N_,
- format: format,
+ sprintf: sprintf,
hasTranslation: function () {
return gettextCatalog.strings[gettextCatalog.currentLanguage] !== undefined;
}
diff --git a/awx/ui/client/src/inventory-scripts/inventory-scripts.form.js b/awx/ui/client/src/inventory-scripts/inventory-scripts.form.js
index 30f85e7c2c..7d6cb01327 100644
--- a/awx/ui/client/src/inventory-scripts/inventory-scripts.form.js
+++ b/awx/ui/client/src/inventory-scripts/inventory-scripts.form.js
@@ -55,8 +55,8 @@ export default ['i18n', function(i18n) {
awDropFile: true,
ngDisabled: '!(inventory_script_obj.summary_fields.user_capabilities.edit || canAdd)',
rows: 10,
- awPopOver: i18n._("
Drag and drop your custom inventory script file here or create one in the field to import your custom inventory. " +
- "
Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python
" + i18n._("Drag and drop your custom inventory script file here or create one in the field to import your custom inventory.") + " " +
+ "
" + i18n.sprintf(i18n._("Script must begin with a hashbang sequence: i.e.... %s"), "#!/usr/bin/env python") + "
Type an option on each line.
'+ - 'For example:
alias1@email.com
\n alias2@email.com
\n'),
+ awPopOver: '
' + i18n._('Type an option on each line.') + '
'+ + '' + i18n._('For example:') + '
alias1@email.com
\n alias2@email.com
\n',
dataTitle: i18n._('Recipient List'),
dataPlacement: 'right',
dataContainer: "body",
@@ -138,8 +138,8 @@ export default ['i18n', function(i18n) {
label: i18n._('Destination Channels'),
type: 'textarea',
rows: 3,
- awPopOver: i18n._('
Type an option on each line. The pound symbol (#) is not required.
'+ - 'For example:
engineering
\n #support
\n'),
+ awPopOver: '
' + i18n._('Type an option on each line. The pound symbol (#) is not required.') + '
'+ + '' + i18n._('For example:') + '
engineering
\n #support
\n',
dataTitle: i18n._('Destination Channels'),
dataPlacement: 'right',
dataContainer: "body",
@@ -155,8 +155,8 @@ export default ['i18n', function(i18n) {
label: i18n._('Destination Channels'),
type: 'textarea',
rows: 3,
- awPopOver: i18n._('
Type an option on each line. The pound symbol (#) is not required.
'+ - 'For example:
engineering
\n #support
\n'),
+ awPopOver: '
' + i18n._('Type an option on each line. The pound symbol (#) is not required.') + '
'+ + '' + i18n._('For example:') + '
engineering
\n #support
\n',
dataTitle: i18n._('Destination Channels'),
dataPlacement: 'right',
dataContainer: "body",
@@ -195,8 +195,8 @@ export default ['i18n', function(i18n) {
from_number: {
label: i18n._('Source Phone Number'),
type: 'text',
- awPopOver: i18n._('
Number associated with the "Messaging Service" in Twilio.
'+ - 'This must be of the form +18005550199.
' + i18n._('Number associated with the "Messaging Service" in Twilio.') + '
'+ + '' + i18n.sprintf(i18n._('This must be of the form %s.'), '+18005550199') + '
Type an option on each line.
'+ - 'For example:+12125552368
\n+19105556162
\n'),
+ awPopOver: '
' + i18n._('Type an option on each line.') + '
'+ + '' + i18n._('For example:') + '+12125552368
\n+19105556162
\n',
dataTitle: i18n._('Destination SMS Number'),
dataPlacement: 'right',
dataContainer: "body",
@@ -292,8 +292,8 @@ export default ['i18n', function(i18n) {
color: {
label: i18n._('Notification Color'),
type: 'text',
- awPopOver: i18n._('
Color can be one of yellow, green, red, ' +
- 'purple, gray, or random.\n'),
+ awPopOver: '
' + i18n.sprintf(i18n._('Color can be one of %s.'), 'yellow, green, red, ' +
+ 'purple, gray, random') + '\n',
awRequiredWhen: {
reqExpression: "hipchat_required",
init: "false"
@@ -329,13 +329,13 @@ export default ['i18n', function(i18n) {
reqExpression: "webhook_required",
init: "false"
},
- awPopOver: i18n._('
Specify HTTP Headers in JSON format
' + - 'For example:
\n' + + awPopOver: '', dataPlacement: 'right', ngShow: "notification_type.value == 'webhook' ", subForm: 'typeSubForm', @@ -367,8 +367,8 @@ export default ['i18n', function(i18n) { label: i18n._('Destination Channels or Users'), type: 'textarea', rows: 3, - awPopOver: i18n._('' + i18n._('Specify HTTP Headers in JSON format') + '
' + + '' + i18n._('For example:') + '
\n' + '{\n' + ' "X-Auth-Token": "828jf0",\n' + ' "X-Ansible": "Is great!"\n' + '}\n' + - ''), + '
Type an option on each line. The pound symbol (#) is not required.
'+ - 'For example:
#support or support
\n @username or username
\n'),
+ awPopOver: '
' + i18n._('Type an option on each line. The pound symbol (#) is not required.') + '
'+ + '' + i18n._('For example:') + '
' + i18n.sprintf(i18n._('%s or %s'), '#support', 'support') + '
\n ' + i18n.sprintf(i18n._('%s or %s'), '@username', 'username') + '
\n',
dataTitle: i18n._('Destination Channels'),
dataPlacement: 'right',
dataContainer: "body",
diff --git a/awx/ui/client/src/notifications/notificationTemplates.list.js b/awx/ui/client/src/notifications/notificationTemplates.list.js
index 2c6f54f08c..f0e1d527d5 100644
--- a/awx/ui/client/src/notifications/notificationTemplates.list.js
+++ b/awx/ui/client/src/notifications/notificationTemplates.list.js
@@ -49,7 +49,7 @@ export default ['i18n', function(i18n){
ngClick: 'addNotification()',
awToolTip: i18n._('Create a new custom inventory'),
actionClass: 'btn List-buttonSubmit',
- buttonContent: i18n._('+ ADD'),
+ buttonContent: '+ ' + i18n._('ADD'),
ngShow: 'canAdd'
}
},
diff --git a/awx/ui/client/src/notifications/notifications.list.js b/awx/ui/client/src/notifications/notifications.list.js
index 688047d370..5509dfebfe 100644
--- a/awx/ui/client/src/notifications/notifications.list.js
+++ b/awx/ui/client/src/notifications/notifications.list.js
@@ -65,7 +65,7 @@ export default ['i18n', function(i18n){
ngClick: 'addNotificationTemplate()',
awToolTip: i18n._('Create a new notification template'),
actionClass: 'btn List-buttonSubmit',
- buttonContent: i18n._('+ ADD NOTIFICATION TEMPLATE'),
+ buttonContent: '+ ' + i18n._('ADD NOTIFICATION TEMPLATE'),
ngShow: 'current_user.is_superuser || (current_user_admin_orgs && current_user_admin_orgs.length > 0)'
}
}
diff --git a/awx/ui/client/src/shared/form-generator.js b/awx/ui/client/src/shared/form-generator.js
index dc5f01bf18..77bf4616d1 100644
--- a/awx/ui/client/src/shared/form-generator.js
+++ b/awx/ui/client/src/shared/form-generator.js
@@ -961,7 +961,7 @@ angular.module('FormGenerator', [GeneratorHelpers.name, 'Utilities', listGenerat
this.form.name + "_form." + fld + `.$error.email'>${error_message}
URL popover text" -msgstr "" - -#: client/src/forms/Projects.js:85 -msgid "
Base path used for locating playbooks. Directories found inside this path will be listed in the playbook directory drop-down. Together the base path and selected playbook directory provide the full path used to locate playbooks.
Use PROJECTS_ROOT in your environment settings file to determine the base path value.
" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:295 -msgid "Color can be one of yellow, green, red, purple, gray, or random."
-msgstr ""
-
-#: client/src/forms/JobTemplates.js:228
-msgid "
Control the level of output ansible will produce as the playbook executes.
" -msgstr "" - -#: client/src/forms/Projects.js:172 -msgid "Delete the local repository in its entirety prior to performing an update.
Depending on the size of the repository this may significantly increase the amount of time required to complete an update.
" -msgstr "" - -#: client/src/inventory-scripts/inventory-scripts.form.js:59 -msgid "Drag and drop your custom inventory script file here or create one in the field to import your custom inventory.
Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python
Each time a job runs using this project, perform an update to the local repository prior to starting the job.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:298 -msgid "Enables creation of a provisioning callback URL. Using the URL a host can contact Tower and request a configuration update using this job template.
" -msgstr "" - -#: client/src/forms/Inventories.js:61 -msgid "" -"Enter inventory variables using either JSON or YAML syntax. Use the radio button to toggle between the two.
JSON:{\n" -"YAML:
\"somevar\": \"somevalue\",
\"password\": \"magic\"
}
---\n" -"
somevar: somevalue
password: magic
View JSON examples at www.json.org
View YAML examples at docs.ansible.com
" -msgstr "" - -#: client/src/controllers/Projects.js:530 -#: client/src/controllers/Projects.js:898 -msgid "Example URLs for GIT SCM include:
Note: When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, do not enter a username (other than git). Additionally, GitHub and Bitbucket do not support password authentication when using SSH. GIT read only protocol (git://) does not use username or password information." -msgstr "" - -#: client/src/controllers/Projects.js:542 -#: client/src/controllers/Projects.js:910 -msgid "
Example URLs for Mercurial SCM include:
Note: Mercurial does not support password authentication for SSH. Do not put the username and key in the URL. If using Bitbucket and SSH, do not supply your Bitbucket username." -msgstr "" - -#: client/src/controllers/Projects.js:537 -#: client/src/controllers/Projects.js:905 -msgid "
Example URLs for Subversion SCM include:
If enabled, run this playbook as an administrator. This is the equivalent of passing the --become option to the ansible-playbook command.
If no organization is given, the credential can only be used by the user that creates the credential. Organization admins and system administrators can assign an organization so that roles for the credential can be assigned to users and teams in that organization.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:176 -msgid "Network credentials are used by Ansible networking modules to connect to and manage networking devices.
" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:198 -msgid "Number associated with the \"Messaging Service\" in Twilio.
This must be of the form +18005550199.
OpenStack domains define administrative boundaries. It is only needed for Keystone v3 authentication URLs. Common scenarios include:
Optional labels that describe this job template, such as 'dev' or 'test'. Labels can be used to group and filter job templates and completed jobs in the Tower display.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:359 -msgid "" -"Pass extra command line variables to the playbook. This is the -e or --extra-vars command line parameter for ansible-playbook. Provide key/value pairs using either YAML or JSON.
{\n" -"YAML:
\"somevar\": \"somevalue\",
\"password\": \"magic\"
}
---" -msgstr "" - -#: client/src/forms/JobTemplates.js:262 -msgid "" -"
somevar: somevalue
password: magic
Provide a comma separated list of tags.
\n" -"Skip tags are useful when you have a large playbook, and you want to skip specific parts of a play or task.
Consult the Ansible documentation for further details on the usage of tags.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:242 -msgid "" -"Provide a comma separated list of tags.
\n" -"Tags are useful when you have a large playbook, and you want to run a specific part of a play or task.
Consult the Ansible documentation for further details on the usage of tags.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:208 -msgid "Provide a host pattern to further constrain the list of hosts that will be managed or affected by the playbook. Multiple patterns can be separated by ; : or ,
For more information and examples see the Patterns topic at docs.ansible.com.
" -msgstr "" - -#: client/src/forms/Projects.js:160 -msgid "Remove any local modifications prior to performing an update.
" -msgstr "" - -#: client/src/forms/Projects.js:103 -msgid "Select from the list of directories found in the base path.Together the base path and the playbook directory provide the full path used to locate playbooks.
Use PROJECTS_ROOT in your environment settings file to determine the base path value.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:140 -msgid "Select the credential you want the job to use when accessing the remote hosts. Choose the credential containing the username and SSH key or password that Ansible will need to log into the remote hosts.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:78 -msgid "Select the inventory containing the hosts you want this job to manage.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:122 -msgid "Select the playbook to be executed by this job.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:105 -msgid "Select the project containing the playbook you want this job to execute.
" -msgstr "" - -#: client/src/forms/JobTemplates.js:160 -msgid "Selecting an optional cloud credential in the job template will pass along the access credentials to the running playbook, allowing provisioning into the cloud without manually passing parameters to the included modules.
" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:332 -msgid "" -"Specify HTTP Headers in JSON format
For example:
\n"
-"{\n"
-" \"X-Auth-Token\": \"828jf0\",\n"
-" \"X-Ansible\": \"Is great!\"\n"
-"}\n"
-""
-msgstr ""
-
-#: client/src/forms/Credentials.js:290
-msgid "Specify a method for 'become' operations. This is equivalent to specifying the --become-method=BECOME_METHOD parameter, where BECOME_METHOD could be sudo | su | pbrun | pfexec | runas
(defaults to sudo)
Subscription ID is an Azure construct, which is mapped to a username.
" -msgstr "" - -#: client/src/helpers/Credentials.js:105 -msgid "The Project ID is the GCE assigned identification. It is constructed as two words followed by a three digit number. Such as:
adjective-noun-000
" -msgstr "" - -#: client/src/forms/Credentials.js:192 -msgid "The email address assigned to the Google Compute Engine service account.
" -msgstr "" - -#: client/src/helpers/Credentials.js:141 -msgid "The host to authenticate with.
For example, https://openstack.business.com/v2.0/"
-msgstr ""
-
-#: client/src/helpers/Credentials.js:75
-msgid "
The host value
" -msgstr "" - -#: client/src/forms/JobTemplates.js:194 -msgid "The number of parallel or simultaneous processes to use while executing the playbook. 0 signifies the default value from the ansible configuration file.
" -msgstr "" - -#: client/src/helpers/Credentials.js:74 -msgid "The project value
" -msgstr "" - -#: client/src/helpers/Credentials.js:138 -msgid "This is the tenant name. This value is usually the same as the username.
" -msgstr "" - -#: client/src/forms/Projects.js:204 -msgid "Time in seconds to consider a project to be current. During job runs and callbacks the task system will evaluate the timestamp of the latest project update. If it is older than Cache Timeout, it is not considered current, and a new project update will be performed.
" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:370 -msgid "" -"Type an option on each line. The pound symbol (#) is not required.
For example:
#support or support
\n"
-" @username or username
"
-msgstr ""
-
-#: client/src/notifications/notificationTemplates.form.js:141
-#: client/src/notifications/notificationTemplates.form.js:158
-msgid ""
-"
Type an option on each line. The pound symbol (#) is not required.
For example:
engineering
\n"
-" #support
"
-msgstr ""
-
-#: client/src/notifications/notificationTemplates.form.js:212
-msgid ""
-"
Type an option on each line.
For example:+12125552368
\n"
-"+19105556162
"
-msgstr ""
-
-#: client/src/notifications/notificationTemplates.form.js:97
-msgid ""
-"
Type an option on each line.
For example:
alias1@email.com
\n"
-" alias2@email.com
"
-msgstr ""
-
-#: client/src/forms/JobTemplates.js:52
-msgid "
When this template is submitted as a job, setting the type to run will execute the playbook, running tasks on the selected hosts.
Setting the type to check will not execute the playbook. Instead, ansible will check playbook syntax, test environment setup and report problems.
Setting the type to scan will execute the playbook and store any scanned facts for use with Tower's System Tracking feature.
" -msgstr "" - -#: client/src/forms/Credentials.js:200 +#: client/src/forms/Credentials.js:199 msgid "API Key" msgstr "" @@ -288,11 +62,11 @@ msgstr "" msgid "API Token" msgstr "" -#: client/src/setup-menu/setup-menu.partial.html:53 +#: client/src/setup-menu/setup-menu.partial.html:59 msgid "About Tower" msgstr "" -#: client/src/forms/Credentials.js:94 +#: client/src/forms/Credentials.js:92 msgid "Access Key" msgstr "" @@ -305,7 +79,7 @@ msgid "Account Token" msgstr "" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 -#: client/src/shared/list-generator/list-generator.factory.js:690 +#: client/src/shared/list-generator/list-generator.factory.js:502 msgid "Actions" msgstr "" @@ -314,6 +88,12 @@ msgstr "" msgid "Activity" msgstr "" +#: client/src/forms/Inventories.js:104 +#: client/src/forms/Inventories.js:150 +#: client/src/forms/Organizations.js:72 +msgid "Add" +msgstr "" + #: client/src/lists/Credentials.js:17 msgid "Add Credentials" msgstr "" @@ -334,7 +114,7 @@ msgstr "" msgid "Add Project" msgstr "" -#: client/src/shared/form-generator.js:1752 +#: client/src/shared/form-generator.js:1637 msgid "Add Survey" msgstr "" @@ -342,14 +122,14 @@ msgstr "" msgid "Add Team" msgstr "" -#: client/src/lists/Users.js:15 +#: client/src/lists/Users.js:25 msgid "Add Users" msgstr "" -#: client/src/forms/Credentials.js:451 -#: client/src/forms/Inventories.js:106 -#: client/src/forms/Organizations.js:72 -#: client/src/forms/Projects.js:245 +#: client/src/forms/Credentials.js:441 +#: client/src/forms/Inventories.js:151 +#: client/src/forms/Organizations.js:73 +#: client/src/forms/Projects.js:236 msgid "Add a permission" msgstr "" @@ -357,11 +137,11 @@ msgstr "" msgid "Add passwords, SSH keys, etc. for Tower to use when launching jobs against machines, or when syncing inventories or projects." msgstr "" -#: client/src/forms/Teams.js:86 +#: client/src/forms/Teams.js:84 msgid "Add user to team" msgstr "" -#: client/src/shared/form-generator.js:1523 +#: client/src/shared/form-generator.js:1446 msgid "Admin" msgstr "" @@ -376,8 +156,8 @@ msgstr "" msgid "All Jobs" msgstr "" -#: client/src/forms/JobTemplates.js:292 -#: client/src/forms/JobTemplates.js:301 +#: client/src/forms/JobTemplates.js:296 +#: client/src/forms/JobTemplates.js:303 msgid "Allow Provisioning Callbacks" msgstr "" @@ -385,26 +165,50 @@ msgstr "" msgid "Allow others to sign into Tower and own the content they create." msgstr "" -#: client/src/forms/Credentials.js:236 -#: client/src/forms/Credentials.js:276 -#: client/src/forms/Credentials.js:317 -#: client/src/forms/Credentials.js:408 +#: client/src/controllers/Projects.js:221 +msgid "An SCM update does not appear to be running for project: %s. Click the %sRefresh%s button to view the latest status." +msgstr "" + +#: client/src/controllers/Projects.js:163 +msgid "Are you sure you want to delete the project below?" +msgstr "" + +#: client/src/controllers/Projects.js:647 +msgid "Are you sure you want to remove the %s below from %s?" +msgstr "" + +#: client/src/forms/Credentials.js:233 +#: client/src/forms/Credentials.js:271 +#: client/src/forms/Credentials.js:311 +#: client/src/forms/Credentials.js:396 msgid "Ask at runtime?" msgstr "" -#: client/src/shared/form-generator.js:1527 +#: client/src/shared/form-generator.js:1448 msgid "Auditor" msgstr "" -#: client/src/forms/Credentials.js:348 +#: client/src/forms/Credentials.js:73 +msgid "Authentication for network device access. This can include SSH keys, usernames, passwords, and authorize information. Network credentials are used when submitting jobs to run playbooks against network devices." +msgstr "" + +#: client/src/forms/Credentials.js:69 +msgid "Authentication for remote machine access. This can include SSH keys, usernames, passwords, and sudo information. Machine credentials are used when submitting jobs to run playbooks against remote hosts." +msgstr "" + +#: client/src/forms/Credentials.js:342 msgid "Authorize" msgstr "" -#: client/src/forms/Credentials.js:356 +#: client/src/forms/Credentials.js:350 msgid "Authorize Password" msgstr "" -#: client/src/forms/JobTemplates.js:286 +#: client/src/forms/Projects.js:80 +msgid "Base path used for locating playbooks. Directories found inside this path will be listed in the playbook directory drop-down. Together the base path and selected playbook directory provide the full path used to locate playbooks." +msgstr "" + +#: client/src/forms/JobTemplates.js:290 msgid "Become Privilege Escalation" msgstr "" @@ -412,72 +216,52 @@ msgstr "" msgid "Browse" msgstr "" -#: client/src/app.js:441 -msgid "CREATE CREDENTIAL" -msgstr "" - -#: client/src/job-templates/add/job-templates-add.route.js:17 -msgid "CREATE JOB TEMPLATE" -msgstr "" - -#: client/src/app.js:307 -msgid "CREATE PROJECT" -msgstr "" - -#: client/src/app.js:356 -msgid "CREATE TEAM" -msgstr "" - -#: client/src/app.js:478 -msgid "CREATE USER" -msgstr "" - -#: client/src/app.js:431 +#: client/src/app.js:305 msgid "CREDENTIALS" msgstr "" -#: client/src/forms/Projects.js:207 +#: client/src/forms/Projects.js:195 msgid "Cache Timeout" msgstr "" -#: client/src/forms/Projects.js:194 -msgid "Cache Timeout (seconds)" +#: client/src/forms/Projects.js:184 +msgid "Cache Timeout%s (seconds)%s" msgstr "" -#: client/src/controllers/Projects.js:264 +#: client/src/controllers/Projects.js:157 msgid "Call to %s failed. DELETE returned status:" msgstr "" -#: client/src/controllers/Projects.js:309 -#: client/src/controllers/Projects.js:325 +#: client/src/controllers/Projects.js:202 +#: client/src/controllers/Projects.js:218 msgid "Call to %s failed. GET status:" msgstr "" -#: client/src/controllers/Projects.js:288 +#: client/src/controllers/Projects.js:181 msgid "Call to %s failed. POST status:" msgstr "" -#: client/src/controllers/Projects.js:334 +#: client/src/controllers/Projects.js:227 msgid "Call to get project failed. GET status:" msgstr "" -#: client/src/shared/form-generator.js:1740 +#: client/src/shared/form-generator.js:1625 msgid "Cancel" msgstr "" -#: client/src/controllers/Projects.js:304 +#: client/src/controllers/Projects.js:197 msgid "Cancel Not Allowed" msgstr "" -#: client/src/lists/Projects.js:122 +#: client/src/lists/Projects.js:114 msgid "Cancel the SCM update" msgstr "" -#: client/src/controllers/Projects.js:66 +#: client/src/controllers/Projects.js:53 msgid "Canceled. Click for details" msgstr "" -#: client/src/shared/form-generator.js:1169 +#: client/src/shared/form-generator.js:1091 msgid "Choose a %s" msgstr "" @@ -485,11 +269,11 @@ msgstr "" msgid "Choose your license file, agree to the End User License Agreement, and click submit." msgstr "" -#: client/src/forms/Projects.js:156 +#: client/src/forms/Projects.js:152 msgid "Clean" msgstr "" -#: client/src/forms/Credentials.js:326 +#: client/src/forms/Credentials.js:320 msgid "Client ID" msgstr "" @@ -497,27 +281,27 @@ msgstr "" msgid "Client Identifier" msgstr "" -#: client/src/forms/Credentials.js:335 +#: client/src/forms/Credentials.js:329 msgid "Client Secret" msgstr "" -#: client/src/shared/form-generator.js:1744 +#: client/src/shared/form-generator.js:1629 msgid "Close" msgstr "" -#: client/src/forms/JobTemplates.js:152 -#: client/src/forms/JobTemplates.js:162 +#: client/src/forms/JobTemplates.js:161 +#: client/src/forms/JobTemplates.js:173 msgid "Cloud Credential" msgstr "" -#: client/src/lists/Inventories.js:62 -msgid "Cloud sourced?" -msgstr "" - #: client/src/helpers/Credentials.js:158 msgid "CloudForms Host" msgstr "" +#: client/src/notifications/notificationTemplates.form.js:295 +msgid "Color can be one of %s." +msgstr "" + #: client/src/lists/CompletedJobs.js:18 msgid "Completed Jobs" msgstr "" @@ -526,15 +310,24 @@ msgstr "" msgid "Configure Notifications" msgstr "" -#: client/src/forms/Users.js:87 +#: client/src/forms/Users.js:82 msgid "Confirm Password" msgstr "" -#: client/src/lists/JobTemplates.js:85 +#: client/src/forms/JobTemplates.js:252 +#: client/src/forms/JobTemplates.js:270 +msgid "Consult the Ansible documentation for further details on the usage of tags." +msgstr "" + +#: client/src/forms/JobTemplates.js:238 +msgid "Control the level of output ansible will produce as the playbook executes." +msgstr "" + +#: client/src/lists/JobTemplates.js:81 msgid "Copy" msgstr "" -#: client/src/lists/JobTemplates.js:88 +#: client/src/lists/JobTemplates.js:84 msgid "Copy template" msgstr "" @@ -542,7 +335,7 @@ msgstr "" msgid "Create Credential" msgstr "" -#: client/src/lists/Credentials.js:60 +#: client/src/lists/Credentials.js:57 msgid "Create a new credential" msgstr "" @@ -551,7 +344,7 @@ msgstr "" msgid "Create a new custom inventory" msgstr "" -#: client/src/lists/Inventories.js:93 +#: client/src/lists/Inventories.js:67 msgid "Create a new inventory" msgstr "" @@ -563,7 +356,7 @@ msgstr "" msgid "Create a new organization" msgstr "" -#: client/src/lists/Projects.js:66 +#: client/src/lists/Projects.js:58 msgid "Create a new project" msgstr "" @@ -571,11 +364,11 @@ msgstr "" msgid "Create a new team" msgstr "" -#: client/src/lists/JobTemplates.js:57 +#: client/src/lists/JobTemplates.js:53 msgid "Create a new template" msgstr "" -#: client/src/lists/Users.js:46 +#: client/src/lists/Users.js:56 msgid "Create a new user" msgstr "" @@ -587,7 +380,7 @@ msgstr "" msgid "Create templates for sending notifications with Email, HipChat, Slack, and SMS." msgstr "" -#: client/src/forms/JobTemplates.js:142 +#: client/src/forms/JobTemplates.js:151 msgid "Credential" msgstr "" @@ -598,31 +391,31 @@ msgid "Credentials" msgstr "" #: client/src/inventory-scripts/inventory-scripts.form.js:50 -#: client/src/inventory-scripts/inventory-scripts.form.js:61 +#: client/src/inventory-scripts/inventory-scripts.form.js:60 msgid "Custom Script" msgstr "" -#: client/src/app.js:264 +#: client/src/app.js:407 msgid "DASHBOARD" msgstr "" -#: client/src/controllers/Projects.js:269 -#: client/src/controllers/Projects.js:880 +#: client/src/controllers/Projects.js:162 +#: client/src/controllers/Projects.js:646 #: client/src/inventory-scripts/inventory-scripts.list.js:74 -#: client/src/lists/Credentials.js:92 -#: client/src/lists/Inventories.js:119 -#: client/src/lists/JobTemplates.js:109 +#: client/src/lists/Credentials.js:90 +#: client/src/lists/Inventories.js:93 +#: client/src/lists/JobTemplates.js:105 #: client/src/lists/Teams.js:78 -#: client/src/lists/Users.js:77 +#: client/src/lists/Users.js:87 #: client/src/notifications/notificationTemplates.list.js:89 msgid "Delete" msgstr "" -#: client/src/lists/Credentials.js:94 +#: client/src/lists/Credentials.js:92 msgid "Delete credential" msgstr "" -#: client/src/lists/Inventories.js:121 +#: client/src/lists/Inventories.js:95 msgid "Delete inventory" msgstr "" @@ -634,7 +427,7 @@ msgstr "" msgid "Delete notification" msgstr "" -#: client/src/forms/Projects.js:168 +#: client/src/forms/Projects.js:162 msgid "Delete on Update" msgstr "" @@ -642,35 +435,43 @@ msgstr "" msgid "Delete team" msgstr "" -#: client/src/lists/JobTemplates.js:112 +#: client/src/lists/JobTemplates.js:108 msgid "Delete template" msgstr "" -#: client/src/lists/Projects.js:116 +#: client/src/forms/Projects.js:164 +msgid "Delete the local repository in its entirety prior to performing an update." +msgstr "" + +#: client/src/lists/Projects.js:108 msgid "Delete the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:95 +#: client/src/lists/ScheduledJobs.js:80 msgid "Delete the schedule" msgstr "" -#: client/src/lists/Users.js:81 +#: client/src/lists/Users.js:91 msgid "Delete user" msgstr "" -#: client/src/forms/Credentials.js:40 -#: client/src/forms/Inventories.js:35 -#: client/src/forms/JobTemplates.js:36 +#: client/src/forms/Projects.js:164 +msgid "Depending on the size of the repository this may significantly increase the amount of time required to complete an update." +msgstr "" + +#: client/src/forms/Credentials.js:41 +#: client/src/forms/Inventories.js:37 +#: client/src/forms/JobTemplates.js:39 #: client/src/forms/Organizations.js:33 #: client/src/forms/Projects.js:38 -#: client/src/forms/Teams.js:33 -#: client/src/inventory-scripts/inventory-scripts.form.js:31 +#: client/src/forms/Teams.js:34 +#: client/src/inventory-scripts/inventory-scripts.form.js:32 #: client/src/inventory-scripts/inventory-scripts.list.js:25 #: client/src/lists/Credentials.js:34 #: client/src/lists/JobTemplates.js:30 -#: client/src/lists/PortalJobTemplates.js:30 +#: client/src/lists/PortalJobTemplates.js:29 #: client/src/lists/Teams.js:31 -#: client/src/notifications/notificationTemplates.form.js:34 +#: client/src/notifications/notificationTemplates.form.js:36 msgid "Description" msgstr "" @@ -692,43 +493,51 @@ msgid "Destination SMS Number" msgstr "" #: client/src/license/license.partial.html:5 -#: client/src/shared/form-generator.js:1561 +#: client/src/shared/form-generator.js:1477 msgid "Details" msgstr "" -#: client/src/forms/Teams.js:145 +#: client/src/forms/Teams.js:148 msgid "Dissasociate permission from team" msgstr "" -#: client/src/forms/Users.js:204 +#: client/src/forms/Users.js:217 msgid "Dissasociate permission from user" msgstr "" -#: client/src/forms/Credentials.js:391 +#: client/src/forms/Credentials.js:383 #: client/src/helpers/Credentials.js:133 msgid "Domain Name" msgstr "" +#: client/src/inventory-scripts/inventory-scripts.form.js:58 +msgid "Drag and drop your custom inventory script file here or create one in the field to import your custom inventory." +msgstr "" + +#: client/src/forms/Projects.js:175 +msgid "Each time a job runs using this project, perform an update to the local repository prior to starting the job." +msgstr "" + #: client/src/inventory-scripts/inventory-scripts.list.js:57 -#: client/src/lists/Credentials.js:73 -#: client/src/lists/Inventories.js:105 -#: client/src/lists/JobTemplates.js:93 +#: client/src/lists/Credentials.js:71 +#: client/src/lists/Inventories.js:79 +#: client/src/lists/JobTemplates.js:89 #: client/src/lists/Teams.js:61 -#: client/src/lists/Users.js:58 +#: client/src/lists/Users.js:68 #: client/src/notifications/notificationTemplates.list.js:63 #: client/src/notifications/notificationTemplates.list.js:72 msgid "Edit" msgstr "" -#: client/src/shared/form-generator.js:1756 +#: client/src/shared/form-generator.js:1641 msgid "Edit Survey" msgstr "" -#: client/src/lists/Credentials.js:75 +#: client/src/lists/Credentials.js:73 msgid "Edit credential" msgstr "" -#: client/src/lists/Inventories.js:107 +#: client/src/lists/Inventories.js:81 msgid "Edit inventory" msgstr "" @@ -744,64 +553,91 @@ msgstr "" msgid "Edit team" msgstr "" -#: client/src/lists/JobTemplates.js:95 +#: client/src/lists/JobTemplates.js:91 msgid "Edit template" msgstr "" -#: client/src/lists/Projects.js:103 +#: client/src/lists/Projects.js:95 msgid "Edit the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:81 +#: client/src/lists/ScheduledJobs.js:66 msgid "Edit the schedule" msgstr "" -#: client/src/lists/Users.js:62 +#: client/src/lists/Users.js:72 msgid "Edit user" msgstr "" -#: client/src/forms/Credentials.js:193 +#: client/src/controllers/Projects.js:197 +msgid "Either you do not have access or the SCM update process completed. Click the %sRefresh%s button to view the latest status." +msgstr "" + +#: client/src/forms/Credentials.js:192 #: client/src/forms/Users.js:42 msgid "Email" msgstr "" -#: client/src/forms/JobTemplates.js:279 +#: client/src/forms/JobTemplates.js:285 msgid "Enable Privilege Escalation" msgstr "" +#: client/src/forms/JobTemplates.js:300 +msgid "Enables creation of a provisioning callback URL. Using the URL a host can contact Tower and request a configuration update using this job template." +msgstr "" + #: client/src/license/license.partial.html:108 msgid "End User License Agreement" msgstr "" +#: client/src/forms/Inventories.js:60 +msgid "Enter inventory variables using either JSON or YAML syntax. Use the radio button to toggle between the two." +msgstr "" + #: client/src/helpers/Credentials.js:159 -msgid "Enter the hostname or IP address for the virtual--become-method=BECOME_METHOD parameter, where BECOME_METHOD could be %s"
+msgstr ""
+
#: client/src/setup-menu/setup-menu.partial.html:17
msgid "Split up your organization to associate content and control permissions for groups."
msgstr ""
-#: client/src/lists/JobTemplates.js:72
-#: client/src/lists/PortalJobTemplates.js:43
+#: client/src/lists/JobTemplates.js:68
+#: client/src/lists/PortalJobTemplates.js:42
msgid "Start a job using this template"
msgstr ""
-#: client/src/controllers/Projects.js:61
+#: client/src/controllers/Projects.js:48
+#: client/src/controllers/Projects.js:541
msgid "Start an SCM update"
msgstr ""
@@ -1722,11 +1712,15 @@ msgstr ""
msgid "Subscription"
msgstr ""
-#: client/src/forms/Credentials.js:153
-#: client/src/forms/Credentials.js:164
+#: client/src/forms/Credentials.js:152
+#: client/src/forms/Credentials.js:163
msgid "Subscription ID"
msgstr ""
+#: client/src/forms/Credentials.js:162
+msgid "Subscription ID is an Azure construct, which is mapped to a username."
+msgstr ""
+
#: client/src/notifications/notifications.list.js:38
msgid "Success"
msgstr ""
@@ -1735,10 +1729,6 @@ msgstr ""
msgid "Successful"
msgstr ""
-#: client/src/lists/Inventories.js:76
-msgid "Sync failures?"
-msgstr ""
-
#: client/src/controllers/Users.js:18
msgid "System Administrator"
msgstr ""
@@ -1747,7 +1737,7 @@ msgstr ""
msgid "System Auditor"
msgstr ""
-#: client/src/app.js:346
+#: client/src/app.js:329
msgid "TEAMS"
msgstr ""
@@ -1755,24 +1745,29 @@ msgstr ""
msgid "TIME"
msgstr ""
+#: client/src/forms/JobTemplates.js:251
+msgid "Tags are useful when you have a large playbook, and you want to run a specific part of a play or task."
+msgstr ""
+
#: client/src/notifications/notificationTemplates.form.js:313
msgid "Target URL"
msgstr ""
-#: client/src/forms/Credentials.js:473
-#: client/src/forms/Inventories.js:128
-#: client/src/forms/Organizations.js:94
+#: client/src/forms/Credentials.js:462
+#: client/src/forms/Inventories.js:126
+#: client/src/forms/Inventories.js:173
+#: client/src/forms/Organizations.js:95
msgid "Team Roles"
msgstr ""
-#: client/src/forms/Users.js:154
+#: client/src/forms/Users.js:155
#: client/src/lists/Teams.js:16
#: client/src/lists/Teams.js:17
#: client/src/setup-menu/setup-menu.partial.html:16
msgid "Teams"
msgstr ""
-#: client/src/forms/Credentials.js:342
+#: client/src/forms/Credentials.js:336
msgid "Tenant ID"
msgstr ""
@@ -1780,11 +1775,35 @@ msgstr ""
msgid "Test notification"
msgstr ""
-#: client/src/controllers/Projects.js:927
+#: client/src/helpers/Credentials.js:105
+msgid "The Project ID is the GCE assigned identification. It is constructed as two words followed by a three digit number. Such as:"
+msgstr ""
+
+#: client/src/controllers/Projects.js:693
msgid "The SCM update process is running."
msgstr ""
-#: client/src/controllers/Projects.js:232
+#: client/src/forms/Credentials.js:191
+msgid "The email address assigned to the Google Compute Engine %sservice account."
+msgstr ""
+
+#: client/src/helpers/Credentials.js:141
+msgid "The host to authenticate with."
+msgstr ""
+
+#: client/src/helpers/Credentials.js:75
+msgid "The host value"
+msgstr ""
+
+#: client/src/forms/JobTemplates.js:205
+msgid "The number of parallel or simultaneous processes to use while executing the playbook. 0 signifies the default value from the %sansible configuration file%s."
+msgstr ""
+
+#: client/src/helpers/Credentials.js:74
+msgid "The project value"
+msgstr ""
+
+#: client/src/controllers/Projects.js:124
msgid "The selected project is not configured for SCM. To configure for SCM, edit the project and provide SCM settings, and then run an update."
msgstr ""
@@ -1796,12 +1815,20 @@ msgstr ""
msgid "There are no jobs to display at this time"
msgstr ""
-#: client/src/controllers/Projects.js:223
+#: client/src/controllers/Projects.js:115
msgid "There is no SCM update information available for this project. An update has not yet been completed. If you have not already done so, start an update for this project."
msgstr ""
-#: client/src/shared/form-generator.js:1020
-#: client/src/shared/form-generator.js:890
+#: client/src/helpers/Credentials.js:138
+msgid "This is the tenant name. This value is usually the same as the username."
+msgstr ""
+
+#: client/src/notifications/notificationTemplates.form.js:199
+msgid "This must be of the form %s."
+msgstr ""
+
+#: client/src/shared/form-generator.js:830
+#: client/src/shared/form-generator.js:955
msgid "This value does not match the password you entered previously. Please confirm that password."
msgstr ""
@@ -1813,7 +1840,15 @@ msgstr ""
msgid "Time Remaining"
msgstr ""
-#: client/src/shared/form-generator.js:929
+#: client/src/forms/Projects.js:192
+msgid "Time in seconds to consider a project to be current. During job runs and callbacks the task system will evaluate the timestamp of the latest project update. If it is older than Cache Timeout, it is not considered current, and a new project update will be performed."
+msgstr ""
+
+#: client/src/forms/Credentials.js:126
+msgid "To learn more about the IAM STS Token, refer to the %sAmazon documentation%s."
+msgstr ""
+
+#: client/src/shared/form-generator.js:855
msgid "Toggle the display of plaintext."
msgstr ""
@@ -1822,38 +1857,54 @@ msgstr ""
msgid "Token"
msgstr ""
-#: client/src/forms/Credentials.js:62
-#: client/src/forms/Credentials.js:87
-#: client/src/forms/Teams.js:129
-#: client/src/forms/Users.js:189
-#: client/src/lists/CompletedJobs.js:63
+#: client/src/forms/Credentials.js:61
+#: client/src/forms/Credentials.js:85
+#: client/src/forms/Teams.js:132
+#: client/src/forms/Users.js:196
+#: client/src/lists/CompletedJobs.js:50
#: client/src/lists/Credentials.js:39
-#: client/src/lists/Projects.js:46
-#: client/src/lists/ScheduledJobs.js:44
-#: client/src/notifications/notificationTemplates.form.js:53
+#: client/src/lists/Projects.js:41
+#: client/src/lists/ScheduledJobs.js:42
+#: client/src/notifications/notificationTemplates.form.js:54
#: client/src/notifications/notificationTemplates.list.js:38
#: client/src/notifications/notifications.list.js:31
msgid "Type"
msgstr ""
-#: client/src/forms/Credentials.js:23
-#: client/src/notifications/notificationTemplates.form.js:21
+#: client/src/forms/Credentials.js:25
+#: client/src/notifications/notificationTemplates.form.js:23
msgid "Type Details"
msgstr ""
+#: client/src/notifications/notificationTemplates.form.js:212
+#: client/src/notifications/notificationTemplates.form.js:97
+msgid "Type an option on each line."
+msgstr ""
+
+#: client/src/notifications/notificationTemplates.form.js:141
+#: client/src/notifications/notificationTemplates.form.js:158
+#: client/src/notifications/notificationTemplates.form.js:370
+msgid "Type an option on each line. The pound symbol (#) is not required."
+msgstr ""
+
+#: client/src/controllers/Projects.js:403
+#: client/src/controllers/Projects.js:684
+msgid "URL popover text"
+msgstr ""
+
#: client/src/login/loginModal/loginModal.partial.html:45
msgid "USERNAME"
msgstr ""
-#: client/src/app.js:468
+#: client/src/app.js:353
msgid "USERS"
msgstr ""
-#: client/src/controllers/Projects.js:328
+#: client/src/controllers/Projects.js:221
msgid "Update Not Found"
msgstr ""
-#: client/src/forms/Projects.js:181
+#: client/src/forms/Projects.js:173
msgid "Update on Launch"
msgstr ""
@@ -1861,6 +1912,11 @@ msgstr ""
msgid "Upgrade"
msgstr ""
+#: client/src/forms/Projects.js:100
+#: client/src/forms/Projects.js:82
+msgid "Use %s in your environment settings file to determine the base path value."
+msgstr ""
+
#: client/src/notifications/notificationTemplates.form.js:404
msgid "Use SSL"
msgstr ""
@@ -1869,30 +1925,39 @@ msgstr ""
msgid "Use TLS"
msgstr ""
-#: client/src/forms/Credentials.js:461
-#: client/src/forms/Inventories.js:116
-#: client/src/forms/Organizations.js:82
-#: client/src/forms/Teams.js:96
+#: client/src/forms/Credentials.js:77
+msgid "Used to check out and synchronize playbook repositories with a remote source control management system such as Git, Subversion (svn), or Mercurial (hg). These credentials are used by Projects."
+msgstr ""
+
+#: client/src/forms/Credentials.js:450
+#: client/src/forms/Inventories.js:115
+#: client/src/forms/Inventories.js:161
+#: client/src/forms/Organizations.js:83
+#: client/src/forms/Teams.js:94
msgid "User"
msgstr ""
-#: client/src/forms/Users.js:99
+#: client/src/forms/Users.js:94
msgid "User Type"
msgstr ""
-#: client/src/forms/Users.js:50
+#: client/src/forms/Users.js:49
#: client/src/helpers/Credentials.js:117
#: client/src/helpers/Credentials.js:32
#: client/src/helpers/Credentials.js:56
#: client/src/helpers/Credentials.js:88
-#: client/src/lists/Users.js:27
+#: client/src/lists/Users.js:37
#: client/src/notifications/notificationTemplates.form.js:64
msgid "Username"
msgstr ""
-#: client/src/forms/Teams.js:77
-#: client/src/lists/Users.js:16
-#: client/src/lists/Users.js:17
+#: client/src/forms/Credentials.js:81
+msgid "Usernames, passwords, and access keys for authenticating to the specified cloud or infrastructure provider. These are used for dynamic inventory sources and for cloud provisioning and deployment in playbook runs."
+msgstr ""
+
+#: client/src/forms/Teams.js:75
+#: client/src/lists/Users.js:26
+#: client/src/lists/Users.js:27
#: client/src/setup-menu/setup-menu.partial.html:10
msgid "Users"
msgstr ""
@@ -1914,16 +1979,16 @@ msgstr ""
msgid "Valid License"
msgstr ""
-#: client/src/forms/Inventories.js:54
+#: client/src/forms/Inventories.js:55
msgid "Variables"
msgstr ""
-#: client/src/forms/Credentials.js:400
+#: client/src/forms/Credentials.js:390
msgid "Vault Password"
msgstr ""
-#: client/src/forms/JobTemplates.js:221
-#: client/src/forms/JobTemplates.js:229
+#: client/src/forms/JobTemplates.js:232
+#: client/src/forms/JobTemplates.js:239
msgid "Verbosity"
msgstr ""
@@ -1934,11 +1999,11 @@ msgstr ""
#: client/src/dashboard/graphs/dashboard-graphs.partial.html:58
#: client/src/inventory-scripts/inventory-scripts.list.js:65
-#: client/src/lists/Credentials.js:82
-#: client/src/lists/Inventories.js:112
-#: client/src/lists/JobTemplates.js:101
+#: client/src/lists/Credentials.js:80
+#: client/src/lists/Inventories.js:86
+#: client/src/lists/JobTemplates.js:97
#: client/src/lists/Teams.js:70
-#: client/src/lists/Users.js:68
+#: client/src/lists/Users.js:78
#: client/src/notifications/notificationTemplates.list.js:80
msgid "View"
msgstr ""
@@ -1947,10 +2012,18 @@ msgstr ""
msgid "View Documentation"
msgstr ""
-#: client/src/shared/form-generator.js:1760
+#: client/src/forms/Inventories.js:65
+msgid "View JSON examples at %s"
+msgstr ""
+
+#: client/src/shared/form-generator.js:1645
msgid "View Survey"
msgstr ""
+#: client/src/forms/Inventories.js:66
+msgid "View YAML examples at %s"
+msgstr ""
+
#: client/src/setup-menu/setup-menu.partial.html:47
msgid "View Your License"
msgstr ""
@@ -1959,15 +2032,15 @@ msgstr ""
msgid "View and edit your license information."
msgstr ""
-#: client/src/lists/Credentials.js:84
+#: client/src/lists/Credentials.js:82
msgid "View credential"
msgstr ""
-#: client/src/setup-menu/setup-menu.partial.html:54
+#: client/src/setup-menu/setup-menu.partial.html:60
msgid "View information about this version of Ansible Tower."
msgstr ""
-#: client/src/lists/Inventories.js:114
+#: client/src/lists/Inventories.js:88
msgid "View inventory"
msgstr ""
@@ -1983,19 +2056,19 @@ msgstr ""
msgid "View team"
msgstr ""
-#: client/src/lists/JobTemplates.js:103
+#: client/src/lists/JobTemplates.js:99
msgid "View template"
msgstr ""
-#: client/src/lists/Projects.js:109
+#: client/src/lists/Projects.js:101
msgid "View the project"
msgstr ""
-#: client/src/lists/ScheduledJobs.js:88
+#: client/src/lists/ScheduledJobs.js:73
msgid "View the schedule"
msgstr ""
-#: client/src/lists/Users.js:71
+#: client/src/lists/Users.js:81
msgid "View user"
msgstr ""
@@ -2007,35 +2080,51 @@ msgstr ""
msgid "Welcome to Ansible Tower! Please complete the steps below to acquire a license."
msgstr ""
-#: client/src/lists/Inventories.js:79
-msgid "Yes"
+#: client/src/forms/JobTemplates.js:52
+msgid "When this template is submitted as a job, setting the type to run will execute the playbook, running tasks on the selected hosts."
msgstr ""
-#: client/src/shared/form-generator.js:1034
+#: client/src/shared/form-generator.js:967
msgid "Your password must be %d characters long."
msgstr ""
-#: client/src/shared/form-generator.js:1040
+#: client/src/shared/form-generator.js:972
msgid "Your password must contain a lowercase letter."
msgstr ""
-#: client/src/shared/form-generator.js:1052
+#: client/src/shared/form-generator.js:982
msgid "Your password must contain a number."
msgstr ""
-#: client/src/shared/form-generator.js:1046
+#: client/src/shared/form-generator.js:977
msgid "Your password must contain an uppercase letter."
msgstr ""
-#: client/src/shared/form-generator.js:1058
+#: client/src/shared/form-generator.js:987
msgid "Your password must contain one of the following characters: %s"
msgstr ""
-#: client/src/controllers/Projects.js:284
+#: client/src/controllers/Projects.js:177
msgid "Your request to cancel the update was submitted to the task manager."
msgstr ""
-#: client/src/forms/Credentials.js:140
-#: client/src/forms/Credentials.js:369
+#: client/src/login/loginModal/loginModal.partial.html:18
+msgid "Your session timed out due to inactivity. Please sign in."
+msgstr ""
+
+#: client/src/forms/Credentials.js:139
+#: client/src/forms/Credentials.js:363
msgid "set in helpers/credentials"
msgstr ""
+
+#: client/src/forms/Credentials.js:380
+msgid "v2 URLs%s - leave blank"
+msgstr ""
+
+#: client/src/forms/Credentials.js:381
+msgid "v3 default%s - set to 'default'"
+msgstr ""
+
+#: client/src/forms/Credentials.js:382
+msgid "v3 multi-domain%s - your domain name"
+msgstr ""
diff --git a/awx/ui/webpack.config.js b/awx/ui/webpack.config.js
index 0b279d7fbf..067ba50dca 100644
--- a/awx/ui/webpack.config.js
+++ b/awx/ui/webpack.config.js
@@ -39,6 +39,7 @@ var vendorPkgs = [
'ng-toast',
'nvd3',
'select2',
+ 'sprintf-js',
'reconnectingwebsocket'
];