From d06bc9df7a0a134b43601d112845b24fafbf434b Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Fri, 31 Mar 2017 12:11:37 -0400 Subject: [PATCH 01/40] updating versions for 3.1.3 release --- awx/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/__init__.py b/awx/__init__.py index 30256ec453..56c8e9eb89 100644 --- a/awx/__init__.py +++ b/awx/__init__.py @@ -5,7 +5,7 @@ import os import sys import warnings -__version__ = '3.1.2' +__version__ = '3.1.3' __all__ = ['__version__'] From d600706150584a543db28f90c36eba607ecd617e Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Fri, 31 Mar 2017 23:59:46 -0400 Subject: [PATCH 02/40] Use jinja template for populating version and release in spec file These macros were intended to pull the version and release from a python file if they werent passed in with --define, but /usr/bin/python is not available at this point in the build process. I'm not sure when or if this ever worked. Perhaps before we were using mock. This approach also works for our Brew builds, as we cannot specify a macro value at build time. --- Makefile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 3d378c60c9..30f4ba2a45 100644 --- a/Makefile +++ b/Makefile @@ -702,13 +702,19 @@ rpm-build: mkdir -p $@ rpm-build/$(SDIST_TAR_FILE): rpm-build dist/$(SDIST_TAR_FILE) tar-build/$(SETUP_TAR_FILE) - cp packaging/rpm/$(NAME).spec rpm-build/ + ansible localhost \ + -m template \ + -a "src=packaging/rpm/$(NAME).spec.j2 dest=rpm-build/$(NAME).spec" \ + -e tower_version=$(VERSION) \ + -e tower_release=$(RELEASE) + cp packaging/rpm/tower.te rpm-build/ cp packaging/rpm/tower.fc rpm-build/ cp packaging/rpm/$(NAME).sysconfig rpm-build/ cp packaging/remove_tower_source.py rpm-build/ cp packaging/bytecompile.sh rpm-build/ cp tar-build/$(SETUP_TAR_FILE) rpm-build/ + if [ "$(OFFICIAL)" != "yes" ] ; then \ (cd dist/ && tar zxf $(SDIST_TAR_FILE)) ; \ (cd dist/ && mv $(NAME)-$(VERSION)-$(BUILD) $(NAME)-$(VERSION)) ; \ @@ -764,8 +770,7 @@ requirements/requirements_ansible_local.txt: --dest=requirements/vendor 2>/dev/null | sed -n 's/^\s*Saved\s*//p' > $@ rpm-build/$(RPM_NVR).src.rpm: /etc/mock/$(MOCK_CFG).cfg - $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build \ - --define "tower_version $(VERSION)" --define "tower_release $(RELEASE)" $(SCL_DEFINES) + $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build mock-srpm: rpmtar rpm-build/$(RPM_NVR).src.rpm @echo "#############################################" @@ -776,8 +781,7 @@ mock-srpm: rpmtar rpm-build/$(RPM_NVR).src.rpm brew-srpm: brewrpmtar mock-srpm rpm-build/$(RPM_NVR).$(RPM_ARCH).rpm: rpm-build/$(RPM_NVR).src.rpm - $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --rebuild rpm-build/$(RPM_NVR).src.rpm \ - --define "tower_version $(VERSION)" --define "tower_release $(RELEASE)" $(SCL_DEFINES) + $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --rebuild rpm-build/$(RPM_NVR).src.rpm mock-rpm: rpmtar rpm-build/$(RPM_NVR).$(RPM_ARCH).rpm @echo "#############################################" From 7b5e70a45e663777599a961d02671018227d9f0d Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Wed, 5 Apr 2017 12:37:07 -0400 Subject: [PATCH 03/40] Fixed bug where single select multiple choice survey questions that are required leave the form permanently disabled. --- awx/ui/client/src/shared/directives.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/ui/client/src/shared/directives.js b/awx/ui/client/src/shared/directives.js index 3531e78f0b..fc4fbc4cdb 100644 --- a/awx/ui/client/src/shared/directives.js +++ b/awx/ui/client/src/shared/directives.js @@ -1390,7 +1390,7 @@ function(ConfigurationUtils, i18n, $rootScope) { } } else { - return false; + return (!value || value === "") ? false : true; } }; } From 1902bab8be5f98182d9dd90721b02f2a7c5c8bc4 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 6 Apr 2017 10:49:02 -0400 Subject: [PATCH 04/40] Fix a with_items insights scm reference for newer ansible behavior Newer ansible versions don't allow with_items to reference undefined variables so we'll provide a default. We'll also update some conditionals to deal with naming requirements changes on insights api endpoints --- awx/playbooks/project_update.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/awx/playbooks/project_update.yml b/awx/playbooks/project_update.yml index bfabd47a98..20f94cc5f0 100644 --- a/awx/playbooks/project_update.yml +++ b/awx/playbooks/project_update.yml @@ -128,8 +128,8 @@ url_password: "{{scm_password}}" force_basic_auth: yes force: yes - when: scm_type == 'insights' and item.name != None - with_items: "{{insights_output.json}}" + when: scm_type == 'insights' and item.name != None and item.name != "" + with_items: "{{ insights_output.json|default([]) }}" failed_when: false - name: Fetch Insights Playbook @@ -140,8 +140,8 @@ url_password: "{{scm_password}}" force_basic_auth: yes force: yes - when: scm_type == 'insights' and item.name == None - with_items: "{{insights_output.json}}" + when: scm_type == 'insights' and (item.name == None or items.name == "") + with_items: "{{ insights_output.json|default([]) }}" failed_when: false - name: detect requirements.yml From 189ea4d7f8a425567a712ea4b10c5c5881846c77 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 6 Apr 2017 10:57:19 -0400 Subject: [PATCH 05/40] Fix insights related spelling mistake that could cause failure --- awx/playbooks/project_update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/playbooks/project_update.yml b/awx/playbooks/project_update.yml index 20f94cc5f0..03b3734a02 100644 --- a/awx/playbooks/project_update.yml +++ b/awx/playbooks/project_update.yml @@ -140,7 +140,7 @@ url_password: "{{scm_password}}" force_basic_auth: yes force: yes - when: scm_type == 'insights' and (item.name == None or items.name == "") + when: scm_type == 'insights' and (item.name == None or item.name == "") with_items: "{{ insights_output.json|default([]) }}" failed_when: false From b9c45ed54a73c439829da62ce0d3d31ca2c43731 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Thu, 6 Apr 2017 17:32:08 -0400 Subject: [PATCH 06/40] Fix bug where API assumed survey choices were list Applies to both single-select and multi-select type questions. UI sends choices in the form of text with line breaks separating the options. Customer complained about empty string erronously sent by the UI being passed to playbook, which is a component of this. --- awx/main/models/mixins.py | 15 +++++--- awx/main/tests/factories/tower.py | 10 +++--- .../tests/unit/models/test_survey_models.py | 34 +++++++++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/awx/main/models/mixins.py b/awx/main/models/mixins.py index e818b5b648..b490197adc 100644 --- a/awx/main/models/mixins.py +++ b/awx/main/models/mixins.py @@ -1,5 +1,6 @@ # Python import json +from copy import copy # Django from django.db import models @@ -196,16 +197,22 @@ class SurveyJobTemplateMixin(models.Model): if type(data[survey_element['variable']]) != list: errors.append("'%s' value is expected to be a list." % survey_element['variable']) else: + choice_list = copy(survey_element['choices']) + if isinstance(choice_list, basestring): + choice_list = choice_list.split('\n') for val in data[survey_element['variable']]: - if val not in survey_element['choices']: + if val not in choice_list: errors.append("Value %s for '%s' expected to be one of %s." % (val, survey_element['variable'], - survey_element['choices'])) + choice_list)) elif survey_element['type'] == 'multiplechoice': + choice_list = copy(survey_element['choices']) + if isinstance(choice_list, basestring): + choice_list = choice_list.split('\n') if survey_element['variable'] in data: - if data[survey_element['variable']] not in survey_element['choices']: + if data[survey_element['variable']] not in choice_list: errors.append("Value %s for '%s' expected to be one of %s." % (data[survey_element['variable']], survey_element['variable'], - survey_element['choices'])) + choice_list)) return errors def survey_variable_validation(self, data): diff --git a/awx/main/tests/factories/tower.py b/awx/main/tests/factories/tower.py index 975adde43b..d1b7ae142d 100644 --- a/awx/main/tests/factories/tower.py +++ b/awx/main/tests/factories/tower.py @@ -135,13 +135,15 @@ def create_survey_spec(variables=None, default_type='integer', required=True): argument specifying variable name(s) ''' if isinstance(variables, list): - name = "%s survey" % variables[0] - description = "A survey that starts with %s." % variables[0] vars_list = variables else: - name = "%s survey" % variables - description = "A survey about %s." % variables vars_list = [variables] + if isinstance(variables[0], basestring): + slogan = variables[0] + else: + slogan = variables[0].get('question_name', 'something') + name = "%s survey" % slogan + description = "A survey that asks about %s." % slogan spec = [] index = 0 diff --git a/awx/main/tests/unit/models/test_survey_models.py b/awx/main/tests/unit/models/test_survey_models.py index eefc5d97ab..502ee5c5d9 100644 --- a/awx/main/tests/unit/models/test_survey_models.py +++ b/awx/main/tests/unit/models/test_survey_models.py @@ -91,6 +91,40 @@ def test_update_kwargs_survey_invalid_default(survey_spec_factory): assert json.loads(defaulted_extra_vars['extra_vars'])['var2'] == 2 +@pytest.mark.parametrize("question_type,default,expect_use,expect_value", [ + ("multiplechoice", "", False, 'N/A'), # historical bug + ("multiplechoice", "zeb", False, 'N/A'), # zeb not in choices + ("multiplechoice", "coffee", True, 'coffee'), + ("multiselect", None, False, 'N/A'), # NOTE: Behavior is arguable, value of [] may be prefered + ("multiselect", "", False, 'N/A'), + ("multiselect", ["zeb"], False, 'N/A'), + ("multiselect", ["milk"], True, ["milk"]), + ("multiselect", ["orange\nmilk"], False, 'N/A'), # historical bug +]) +def test_optional_survey_question_defaults( + survey_spec_factory, question_type, default, expect_use, expect_value): + spec = survey_spec_factory([ + { + "required": False, + "default": default, + "choices": "orange\nmilk\nchocolate\ncoffee", + "variable": "c", + "type": question_type + }, + ]) + jt = JobTemplate(name="test-jt", survey_spec=spec, survey_enabled=True) + defaulted_extra_vars = jt._update_unified_job_kwargs() + element = spec['spec'][0] + if expect_use: + assert jt._survey_element_validation(element, {element['variable']: element['default']}) == [] + else: + assert jt._survey_element_validation(element, {element['variable']: element['default']}) + if expect_use: + assert json.loads(defaulted_extra_vars['extra_vars'])['c'] == expect_value + else: + assert 'c' not in defaulted_extra_vars['extra_vars'] + + class TestWorkflowSurveys: def test_update_kwargs_survey_defaults(self, survey_spec_factory): "Assure that the survey default over-rides a JT variable" From 3e9bc3b3d4b59171161022ae9bbec2da0c50dfcf Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Fri, 7 Apr 2017 11:41:27 -0400 Subject: [PATCH 07/40] Hide extra_vars in job notifications --- awx/main/models/jobs.py | 2 +- awx/main/tests/functional/test_jobs.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 388be47d17..a89123bac9 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -595,7 +595,7 @@ class Job(UnifiedJob, JobOptions, SurveyJobMixin, JobNotificationMixin): playbook=self.playbook, credential=self.credential.name if self.credential else None, limit=self.limit, - extra_vars=self.extra_vars, + extra_vars=self.display_extra_vars(), hosts=all_hosts)) return data diff --git a/awx/main/tests/functional/test_jobs.py b/awx/main/tests/functional/test_jobs.py index 5169d98fb1..ed50c22faa 100644 --- a/awx/main/tests/functional/test_jobs.py +++ b/awx/main/tests/functional/test_jobs.py @@ -2,6 +2,8 @@ from awx.main.models import Job, Instance from django.test.utils import override_settings import pytest +import json + @pytest.mark.django_db def test_orphan_unified_job_creation(instance, inventory): @@ -22,3 +24,15 @@ def test_job_capacity_and_with_inactive_node(): assert Instance.objects.total_capacity() == 100 with override_settings(AWX_ACTIVE_NODE_TIME=0): assert Instance.objects.total_capacity() < 100 + + +@pytest.mark.django_db +def test_job_notification_data(inventory): + encrypted_str = "$encrypted$" + job = Job.objects.create( + job_template=None, inventory=inventory, name='hi world', + extra_vars=json.dumps({"SSN": "123-45-6789"}), + survey_passwords={"SSN": encrypted_str} + ) + notification_data = job.notification_data(block=0) + assert json.loads(notification_data['extra_vars'])['SSN'] == encrypted_str From b0a8e8c3326b12176e5804e0c2ea1c3c4c0c7a32 Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Thu, 6 Apr 2017 14:33:06 -0400 Subject: [PATCH 08/40] Update CTiT serializer integer field to handle html cornercase. --- awx/conf/fields.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/awx/conf/fields.py b/awx/conf/fields.py index f8d012a3aa..e68523271b 100644 --- a/awx/conf/fields.py +++ b/awx/conf/fields.py @@ -31,6 +31,16 @@ class CharField(CharField): return super(CharField, self).to_representation(value) +class IntegerField(IntegerField): + + def get_value(self, dictionary): + ret = super(IntegerField, self).get_value(dictionary) + # Handle UI corner case + if ret == '' and self.allow_null and not getattr(self, 'allow_blank', False): + return None + return ret + + class StringListField(ListField): child = CharField() From 9b1107c054aa2d5948af5545a1711aab00d3254d Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Mon, 10 Apr 2017 14:39:31 -0400 Subject: [PATCH 09/40] Prevent unexpected callback module attribute warning. --- awx/lib/tower_display_callback/module.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/awx/lib/tower_display_callback/module.py b/awx/lib/tower_display_callback/module.py index 76dcb5be7f..14e6fba66d 100644 --- a/awx/lib/tower_display_callback/module.py +++ b/awx/lib/tower_display_callback/module.py @@ -63,7 +63,6 @@ class BaseCallbackModule(CallbackBase): @contextlib.contextmanager def capture_event_data(self, event, **event_data): - event_data.setdefault('uuid', str(uuid.uuid4())) if event not in self.EVENTS_WITHOUT_TASK: @@ -75,7 +74,7 @@ class BaseCallbackModule(CallbackBase): if event_data['res'].get('_ansible_no_log', False): event_data['res'] = {'censored': CENSORED} for i, item in enumerate(event_data['res'].get('results', [])): - if event_data['res']['results'][i].get('_ansible_no_log', False): + if isinstance(item, dict) and item.get('_ansible_no_log', False): event_data['res']['results'][i] = {'censored': CENSORED} with event_context.display_lock: From ea8b78ca49c851f288553ee1127b40e16d6ca668 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 10 Apr 2017 13:08:34 -0400 Subject: [PATCH 10/40] Protect cluster nodes after an upgrade * Modify instance model to container a version number for the node * Update that version number during the heartbeat * If during a heartbeat any of the nodes are of a newer version then shutdown the current node. The idea behind this is that if all nodes were upgraded at the same time then at the moment of the healthcheck they should all be at the newer version. Otherwise we put the system in a state where it can receive the upgrade but stay down until that happens. During setup playbook run the services will be fully restarted. --- awx/api/views.py | 3 ++- .../migrations/0037_v313_instance_version.py | 19 ++++++++++++++++ awx/main/models/ha.py | 1 + awx/main/tasks.py | 22 ++++++++++++++++--- awx/main/utils/reload.py | 18 +++++++++------ 5 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 awx/main/migrations/0037_v313_instance_version.py diff --git a/awx/api/views.py b/awx/api/views.py index 33ef14826a..f159dc2e43 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -222,7 +222,8 @@ class ApiV1PingView(APIView): response['instances'] = [] for instance in Instance.objects.all(): - response['instances'].append(dict(node=instance.hostname, heartbeat=instance.modified, capacity=instance.capacity)) + response['instances'].append(dict(node=instance.hostname, heartbeat=instance.modified, + capacity=instance.capacity, version=instance.version)) response['instances'].sort() return Response(response) diff --git a/awx/main/migrations/0037_v313_instance_version.py b/awx/main/migrations/0037_v313_instance_version.py new file mode 100644 index 0000000000..64c520ea85 --- /dev/null +++ b/awx/main/migrations/0037_v313_instance_version.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0036_v311_insights'), + ] + + operations = [ + migrations.AddField( + model_name='instance', + name='version', + field=models.CharField(max_length=24, blank=True), + ), + ] diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index cb01d03722..2a75f1440a 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -26,6 +26,7 @@ class Instance(models.Model): hostname = models.CharField(max_length=250, unique=True) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) + version = models.CharField(max_length=24, blank=True) capacity = models.PositiveIntegerField( default=100, editable=False, diff --git a/awx/main/tasks.py b/awx/main/tasks.py index d60d936531..aa5b9a0f0f 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -21,6 +21,7 @@ import traceback import urlparse import uuid from distutils.version import LooseVersion as Version +from datetime import timedelta import yaml try: import psutil @@ -45,6 +46,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.cache import cache # AWX +from awx import __version__ as tower_application_version from awx.main.constants import CLOUD_PROVIDERS from awx.main.models import * # noqa from awx.main.models import UnifiedJob @@ -53,7 +55,7 @@ from awx.main.task_engine import TaskEnhancer from awx.main.utils import (get_ansible_version, get_ssh_version, decrypt_field, update_scm_url, check_proot_installed, build_proot_temp_dir, wrap_args_with_proot, get_system_task_capacity, OutputEventFilter, parse_yaml_or_json) -from awx.main.utils.reload import restart_local_services +from awx.main.utils.reload import restart_local_services, stop_local_services from awx.main.utils.handlers import configure_external_logger from awx.main.consumers import emit_channel_notification @@ -174,13 +176,27 @@ def purge_old_stdout_files(self): @task(bind=True) def cluster_node_heartbeat(self): logger.debug("Cluster node heartbeat task.") + nowtime = now() inst = Instance.objects.filter(hostname=settings.CLUSTER_HOST_ID) if inst.exists(): inst = inst[0] inst.capacity = get_system_task_capacity() + inst.version = tower_application_version inst.save() - return - raise RuntimeError("Cluster Host Not Found: {}".format(settings.CLUSTER_HOST_ID)) + else: + raise RuntimeError("Cluster Host Not Found: {}".format(settings.CLUSTER_HOST_ID)) + recent_inst = Instance.objects.filter(modified__gt=nowtime - timedelta(seconds=70)).exclude(hostname=settings.CLUSTER_HOST_ID) + # IFF any node has a greater version than we do, then we'll shutdown services + for other_inst in recent_inst: + if other_inst.version == "": + continue + if Version(other_inst.version) > Version(tower_application_version): + logger.error("Host {} reports Tower version {}, but this node {} is at {}, shutting down".format(other_inst.hostname, + other_inst.version, + inst.hostname, + inst.version)) + stop_local_services(['uwsgi', 'celery', 'beat', 'callback', 'fact']) + @task(bind=True, queue='default') diff --git a/awx/main/utils/reload.py b/awx/main/utils/reload.py index 729a33a703..6a88062ab5 100644 --- a/awx/main/utils/reload.py +++ b/awx/main/utils/reload.py @@ -14,12 +14,12 @@ from celery import current_app logger = logging.getLogger('awx.main.utils.reload') -def _uwsgi_reload(): +def _uwsgi_fifo_command(uwsgi_command): # http://uwsgi-docs.readthedocs.io/en/latest/MasterFIFO.html#available-commands logger.warn('Initiating uWSGI chain reload of server') - TRIGGER_CHAIN_RELOAD = 'c' + TRIGGER_COMMAND = uwsgi_command with open(settings.UWSGI_FIFO_LOCATION, 'w') as awxfifo: - awxfifo.write(TRIGGER_CHAIN_RELOAD) + awxfifo.write(TRIGGER_COMMAND) def _reset_celery_thread_pool(): @@ -29,7 +29,7 @@ def _reset_celery_thread_pool(): destination=['celery@{}'.format(settings.CLUSTER_HOST_ID)], reply=False) -def _supervisor_service_restart(service_internal_names): +def _supervisor_service_command(service_internal_names, command): ''' Service internal name options: - beat - celery - callback - channels - uwsgi - daphne @@ -46,7 +46,7 @@ def _supervisor_service_restart(service_internal_names): for n in service_internal_names: if n in name_translation_dict: programs.append('{}:{}'.format(group_name, name_translation_dict[n])) - args.extend(['restart']) + args.extend([command]) args.extend(programs) logger.debug('Issuing command to restart services, args={}'.format(args)) subprocess.Popen(args) @@ -55,14 +55,18 @@ def _supervisor_service_restart(service_internal_names): def restart_local_services(service_internal_names): logger.warn('Restarting services {} on this node in response to user action'.format(service_internal_names)) if 'uwsgi' in service_internal_names: - _uwsgi_reload() + _uwsgi_fifo_command(uwsgi_command='c') service_internal_names.remove('uwsgi') restart_celery = False if 'celery' in service_internal_names: restart_celery = True service_internal_names.remove('celery') - _supervisor_service_restart(service_internal_names) + _supervisor_service_command(service_internal_names, command='restart') if restart_celery: # Celery restarted last because this probably includes current process _reset_celery_thread_pool() + +def stop_local_services(service_internal_names): + logger.warn('Stopping services {} on this node in response to user action'.format(service_internal_names)) + _supervisor_service_command(service_internal_names, command='stop') From b1c839ea6247e4266133a283098d5d04cd543e17 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 10 Apr 2017 14:00:34 -0400 Subject: [PATCH 11/40] Refactor service reloading unit tests Make sure these are consistent with the more flexible utility commands --- awx/main/tests/unit/utils/test_reload.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/awx/main/tests/unit/utils/test_reload.py b/awx/main/tests/unit/utils/test_reload.py index d1f3291753..83466c9cc8 100644 --- a/awx/main/tests/unit/utils/test_reload.py +++ b/awx/main/tests/unit/utils/test_reload.py @@ -4,7 +4,7 @@ from awx.main.utils import reload def test_produce_supervisor_command(mocker): with mocker.patch.object(reload.subprocess, 'Popen'): - reload._supervisor_service_restart(['beat', 'callback', 'fact']) + reload._supervisor_service_command(['beat', 'callback', 'fact'], "restart") reload.subprocess.Popen.assert_called_once_with( ['supervisorctl', 'restart', 'tower-processes:receiver', 'tower-processes:factcacher']) @@ -14,13 +14,13 @@ def test_routing_of_service_restarts_works(mocker): This tests that the parent restart method will call the appropriate service restart methods, depending on which services are given in args ''' - with mocker.patch.object(reload, '_uwsgi_reload'),\ + with mocker.patch.object(reload, '_uwsgi_fifo_command'),\ mocker.patch.object(reload, '_reset_celery_thread_pool'),\ - mocker.patch.object(reload, '_supervisor_service_restart'): + mocker.patch.object(reload, '_supervisor_service_command'): reload.restart_local_services(['uwsgi', 'celery', 'flower', 'daphne']) - reload._uwsgi_reload.assert_called_once_with() + reload._uwsgi_fifo_command.assert_called_once_with(uwsgi_command="c") reload._reset_celery_thread_pool.assert_called_once_with() - reload._supervisor_service_restart.assert_called_once_with(['flower', 'daphne']) + reload._supervisor_service_command.assert_called_once_with(['flower', 'daphne'], command="restart") @@ -28,11 +28,11 @@ def test_routing_of_service_restarts_diables(mocker): ''' Test that methods are not called if not in the args ''' - with mocker.patch.object(reload, '_uwsgi_reload'),\ + with mocker.patch.object(reload, '_uwsgi_fifo_command'),\ mocker.patch.object(reload, '_reset_celery_thread_pool'),\ - mocker.patch.object(reload, '_supervisor_service_restart'): + mocker.patch.object(reload, '_supervisor_service_command'): reload.restart_local_services(['flower']) - reload._uwsgi_reload.assert_not_called() + reload._uwsgi_fifo_command.assert_not_called() reload._reset_celery_thread_pool.assert_not_called() - reload._supervisor_service_restart.assert_called_once_with(['flower']) + reload._supervisor_service_command.assert_called_once_with(['flower'], command="restart") From 9a678c72dc23ff4a3bfd091003985385d38a4acc Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Mon, 10 Apr 2017 17:13:42 -0400 Subject: [PATCH 12/40] Fixed bug where optional single select survey questions with a default value couldn't be skipped --- .../job-submission-factories/getsurveyquestions.factory.js | 7 +++++++ .../job-submission-factories/launchjob.factory.js | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js index 28aa13d6db..4b633d3eaa 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js @@ -42,6 +42,13 @@ export default else if(question.type === "multiplechoice") { question.model = question.default ? angular.copy(question.default) : ""; question.choices = question.choices.split(/\n/); + + // Add a default empty string option to the choices array. If this choice is + // selected then the extra var will not be sent when we POST to the launch + // endpoint + if(!question.required) { + question.choices.unshift(''); + } } else if(question.type === "float"){ question.model = (!Empty(question.default)) ? angular.copy(question.default) : (!Empty(question.default_float)) ? angular.copy(question.default_float) : ""; diff --git a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js index 3cfb80e7a3..9361803735 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js @@ -90,9 +90,9 @@ export default // for optional select lists, if they are left blank make sure we submit // a value that the API will consider "empty" // - case "multiplechoice": - job_launch_data.extra_vars[fld] = ""; - break; + // ISSUE: I don't think this logic ever actually fires + // When I tested this, we don't pass this extra var back + // through the api when the mutliselect is optional and empty case "multiselect": job_launch_data.extra_vars[fld] = []; break; From 2360f5effe2276bc7fd04f9c8952860fa43c246a Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Fri, 17 Mar 2017 15:39:43 -0400 Subject: [PATCH 13/40] Spanish translation from alberto@oforte.net. --- awx/locale/es/LC_MESSAGES/django.po | 4319 +++++++++++++++++++++++++++ awx/ui/po/es.po | 3768 +++++++++++++++++++++++ 2 files changed, 8087 insertions(+) create mode 100644 awx/locale/es/LC_MESSAGES/django.po create mode 100644 awx/ui/po/es.po diff --git a/awx/locale/es/LC_MESSAGES/django.po b/awx/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000000..1d565f426d --- /dev/null +++ b/awx/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,4319 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ANSIBLE TOWER 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-09 14:32+0000\n" +"PO-Revision-Date: 2017-03-16 16:58+0100\n" +"Last-Translator: Alberto Gonzalez \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.10\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" + +#: awx/api/authentication.py:67 +msgid "Invalid token header. No credentials provided." +msgstr "Cabecera token inválida. Credenciales no indicados." + +#: awx/api/authentication.py:70 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" +"Cabecera token inválida. La cadena de texto token no debe contener espacios." + +#: awx/api/authentication.py:105 +msgid "User inactive or deleted" +msgstr "Usuario inactivo o eliminado" + +#: awx/api/authentication.py:161 +msgid "Invalid task token" +msgstr "Token de tarea inválido" + +#: awx/api/conf.py:12 +msgid "Idle Time Force Log Out" +msgstr "Tiempo de inactividad fuerza desconexión" + +#: awx/api/conf.py:13 +msgid "" +"Number of seconds that a user is inactive before they will need to login " +"again." +msgstr "" +"Número de segundos que un usuario es inactivo antes de que ellos vuelvan a " +"conectarse de nuevo." + +#: awx/api/conf.py:14 awx/api/conf.py:24 awx/api/conf.py:33 +#: awx/sso/conf.py:124 awx/sso/conf.py:135 awx/sso/conf.py:147 +#: awx/sso/conf.py:162 +msgid "Authentication" +msgstr "Autentificación" + +#: awx/api/conf.py:22 +msgid "Maximum number of simultaneous logins" +msgstr "Número máximo de inicios de sesión simultáneos" + +#: awx/api/conf.py:23 +msgid "" +"Maximum number of simultaneous logins a user may have. To disable enter -1." +msgstr "" +"Número máximo de inicio de sesión simultáneos que un usuario puede tener. " +"Para deshabilitar introduzca -1." + +#: awx/api/conf.py:31 +msgid "Enable HTTP Basic Auth" +msgstr "Habilitar autentificación básica HTTP" + +#: awx/api/conf.py:32 +msgid "Enable HTTP Basic Auth for the API Browser." +msgstr "Habilitar autentificación básica HTTP para la navegación API." + +#: awx/api/generics.py:466 +msgid "\"id\" is required to disassociate" +msgstr "\"id\" es necesario para desasociar" + +#: awx/api/metadata.py:51 +msgid "Database ID for this {}." +msgstr "ID de la base de datos para esto {}" + +#: awx/api/metadata.py:52 +msgid "Name of this {}." +msgstr "Nombre de esto {}" + +#: awx/api/metadata.py:53 +msgid "Optional description of this {}." +msgstr "Descripción opcional de esto {}" + +#: awx/api/metadata.py:54 +msgid "Data type for this {}." +msgstr "Tipo de datos para esto {}" + +#: awx/api/metadata.py:55 +msgid "URL for this {}." +msgstr "URL para esto {}" + +#: awx/api/metadata.py:56 +msgid "Data structure with URLs of related resources." +msgstr "Estructura de datos con URLs de recursos relacionados." + +#: awx/api/metadata.py:57 +msgid "Data structure with name/description for related resources." +msgstr "" +"Estructura de datos con nombre/descripción para recursos relacionados.arga" + +#: awx/api/metadata.py:58 +msgid "Timestamp when this {} was created." +msgstr "Fecha y hora cuando este {} fue creado." + +#: awx/api/metadata.py:59 +msgid "Timestamp when this {} was last modified." +msgstr "Fecha y hora cuando este {} fue modificado más recientemente." + +#: awx/api/parsers.py:31 +#, python-format +msgid "JSON parse error - %s" +msgstr "Error analizando JSON - %s" + +#: awx/api/serializers.py:251 +msgid "Playbook Run" +msgstr "Ejecutar Playbook" + +#: awx/api/serializers.py:252 +msgid "Command" +msgstr "Comando" + +#: awx/api/serializers.py:253 +msgid "SCM Update" +msgstr "Actualización SCM" + +#: awx/api/serializers.py:254 +msgid "Inventory Sync" +msgstr "Sincronizar inventario" + +#: awx/api/serializers.py:255 +msgid "Management Job" +msgstr "Trabajo de gestión" + +#: awx/api/serializers.py:256 +msgid "Workflow Job" +msgstr "Tarea en flujo de trabajo" + +#: awx/api/serializers.py:257 +msgid "Workflow Template" +msgstr "Plantilla de flujo de trabajo" + +#: awx/api/serializers.py:653 awx/api/serializers.py:711 awx/api/views.py:3842 +#, python-format +msgid "" +"Standard Output too large to display (%(text_size)d bytes), only download " +"supported for sizes over %(supported_size)d bytes" +msgstr "" +"La salida estándar es muy larga para ser mostrada (%(text_size)d bytes), " +"sólo está soportada la descarga para tamaños por encima de " +"%(supported_size)d bytes" + +#: awx/api/serializers.py:726 +msgid "Write-only field used to change the password." +msgstr "Campo de sólo escritura utilizado para cambiar la contraseña." + +#: awx/api/serializers.py:728 +msgid "Set if the account is managed by an external service" +msgstr "Establecer si la cuenta es administrada por un servicio externo" + +#: awx/api/serializers.py:752 +msgid "Password required for new User." +msgstr "Contraseña requerida para un usuario nuevo." + +#: awx/api/serializers.py:836 +#, python-format +msgid "Unable to change %s on user managed by LDAP." +msgstr "Incapaz de cambiar %s en usuario gestionado por LDAP." + +#: awx/api/serializers.py:997 +msgid "Organization is missing" +msgstr "Organización no encontrada." + +#: awx/api/serializers.py:1001 +msgid "Update options must be set to false for manual projects." +msgstr "" +"Opciones de actualización deben ser establecidas a false para proyectos " +"manuales." + +#: awx/api/serializers.py:1007 +msgid "Array of playbooks available within this project." +msgstr "Colección de playbooks disponibles dentro de este proyecto." + +#: awx/api/serializers.py:1189 +#, python-format +msgid "Invalid port specification: %s" +msgstr "Especificación de puerto inválido: %s" + +#: awx/api/serializers.py:1217 awx/main/validators.py:193 +msgid "Must be valid JSON or YAML." +msgstr "Debe ser un válido JSON o YAML." + +#: awx/api/serializers.py:1274 +msgid "Invalid group name." +msgstr "Nombre de grupo inválido." + +#: awx/api/serializers.py:1349 +msgid "" +"Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" +msgstr "" +"El script debe empezar con una secuencia hashbang, p.e.... #!/usr/bin/env " +"python" + +#: awx/api/serializers.py:1402 +msgid "If 'source' is 'custom', 'source_script' must be provided." +msgstr "Si 'source' es 'custom', 'source_script' debe ser especificado." + +#: awx/api/serializers.py:1406 +msgid "" +"The 'source_script' does not belong to the same organization as the " +"inventory." +msgstr "" +"El 'source_script' no pertenece a la misma organización que el inventario." + +#: awx/api/serializers.py:1408 +msgid "'source_script' doesn't exist." +msgstr "'source_script' no existe." + +#: awx/api/serializers.py:1770 +msgid "" +"Write-only field used to add user to owner role. If provided, do not give " +"either team or organization. Only valid for creation." +msgstr "" +"Campo de sólo escritura utilizado para añadir usuario a rol de propietario. " +"Si se indica, no otorgar equipo u organización. Sólo válido para creación." + +#: awx/api/serializers.py:1775 +msgid "" +"Write-only field used to add team to owner role. If provided, do not give " +"either user or organization. Only valid for creation." +msgstr "" +"Campo de sólo escritura para añadir equipo a un rol propietario.Si se " +"indica, no otorgar usuario u organización. Sólo válido para creación." + +#: awx/api/serializers.py:1780 +msgid "" +"Inherit permissions from organization roles. If provided on creation, do not " +"give either user or team." +msgstr "" +"Permisos heredados desde roles de organización. Si se indica, no otorgar " +"usuario o equipo." + +#: awx/api/serializers.py:1796 +msgid "Missing 'user', 'team', or 'organization'." +msgstr "No encontrado 'user', 'team' u 'organization'" + +#: awx/api/serializers.py:1809 +msgid "" +"Credential organization must be set and match before assigning to a team" +msgstr "" +"Credenciales de organización deben ser establecidas y coincidir antes de ser " +"asignadas a un equipo" + +#: awx/api/serializers.py:1905 +msgid "This field is required." +msgstr "Este campo es obligatorio." + +#: awx/api/serializers.py:1907 awx/api/serializers.py:1909 +msgid "Playbook not found for project." +msgstr "Playbook no encontrado para el proyecto." + +#: awx/api/serializers.py:1911 +msgid "Must select playbook for project." +msgstr "Debe seleccionar un playbook para el proyecto." + +#: awx/api/serializers.py:1977 +msgid "Must either set a default value or ask to prompt on launch." +msgstr "" +"Debe establecer un valor por defecto o preguntar por valor al ejecutar." + +#: awx/api/serializers.py:1980 awx/main/models/jobs.py:277 +msgid "Scan jobs must be assigned a fixed inventory." +msgstr "Trabajos de escaneo deben ser asignados a un inventario fijo." + +#: awx/api/serializers.py:1982 awx/main/models/jobs.py:280 +msgid "Job types 'run' and 'check' must have assigned a project." +msgstr "Tipos de trabajo 'run' y 'check' deben tener asignado un proyecto." + +#: awx/api/serializers.py:1989 +msgid "Survey Enabled cannot be used with scan jobs." +msgstr "" +"Un cuestionario activado no puede ser utilizado con trabajos de escaneo." + +#: awx/api/serializers.py:2049 +msgid "Invalid job template." +msgstr "Plantilla de trabajo inválida" + +#: awx/api/serializers.py:2134 +msgid "Credential not found or deleted." +msgstr "Credencial no encontrado o eliminado." + +#: awx/api/serializers.py:2136 +msgid "Job Template Project is missing or undefined." +msgstr "Proyecto en la plantilla de trabajo no encontrado o no definido." + +#: awx/api/serializers.py:2138 +msgid "Job Template Inventory is missing or undefined." +msgstr "Inventario en la plantilla de trabajo no encontrado o no definido." + +#: awx/api/serializers.py:2423 +#, python-format +msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." +msgstr "" +"j%(job_type)s no es un tipo de trabajo válido. Las opciones son %(choices)s." + +#: awx/api/serializers.py:2428 +msgid "Workflow job template is missing during creation." +msgstr "" +"Plantilla de tarea en el flujo de trabajo no encontrada durante la creación." + +#: awx/api/serializers.py:2433 +#, python-format +msgid "Cannot nest a %s inside a WorkflowJobTemplate" +msgstr "No es posible anidar un %s dentro de un WorkflowJobTemplate" + +#: awx/api/serializers.py:2671 +#, python-format +msgid "Job Template '%s' is missing or undefined." +msgstr "Plantilla de trabajo '%s' no encontrada o no definida." + +#: awx/api/serializers.py:2697 +msgid "Must be a valid JSON or YAML dictionary." +msgstr "Debe ser un JSON válido o un diccionario YAML." + +#: awx/api/serializers.py:2839 +msgid "" +"Missing required fields for Notification Configuration: notification_type" +msgstr "" +"Campos obligatorios no definidos para la configuración de notificación: " +"notification_type" + +#: awx/api/serializers.py:2862 +msgid "No values specified for field '{}'" +msgstr "Ningún valor especificado para el campo '{}'" + +#: awx/api/serializers.py:2867 +msgid "Missing required fields for Notification Configuration: {}." +msgstr "Campos no definidos para la configuración de notificación: {}." + +#: awx/api/serializers.py:2870 +msgid "Configuration field '{}' incorrect type, expected {}." +msgstr "Tipo incorrecto en la configuración del campo '{} ', esperado {}." + +#: awx/api/serializers.py:2923 +msgid "Inventory Source must be a cloud resource." +msgstr "Fuente del inventario debe ser un recurso cloud." + +#: awx/api/serializers.py:2925 +msgid "Manual Project can not have a schedule set." +msgstr "Un proyecto manual no puede tener una programación establecida." + +#: awx/api/serializers.py:2947 +msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" +msgstr "" +"DTSTART necesario en 'rrule'. El valor debe coincidir: DTSTART:" +"YYYYMMDDTHHMMSSZ" + +#: awx/api/serializers.py:2949 +msgid "Multiple DTSTART is not supported." +msgstr "Múltiple DTSTART no está soportado." + +#: awx/api/serializers.py:2951 +msgid "RRULE require in rrule." +msgstr "RRULE requerido en rrule" + +#: awx/api/serializers.py:2953 +msgid "Multiple RRULE is not supported." +msgstr "Múltiple RRULE no está soportado." + +#: awx/api/serializers.py:2955 +msgid "INTERVAL required in rrule." +msgstr "INTERVAL requerido en 'rrule'." + +#: awx/api/serializers.py:2957 +msgid "TZID is not supported." +msgstr "TZID no está soportado." + +#: awx/api/serializers.py:2959 +msgid "SECONDLY is not supported." +msgstr "SECONDLY no está soportado." + +#: awx/api/serializers.py:2961 +msgid "Multiple BYMONTHDAYs not supported." +msgstr "Multiple BYMONTHDAYs no soportado." + +#: awx/api/serializers.py:2963 +msgid "Multiple BYMONTHs not supported." +msgstr "Multiple BYMONTHs no soportado." + +#: awx/api/serializers.py:2965 +msgid "BYDAY with numeric prefix not supported." +msgstr "BYDAY con prefijo numérico no soportado." + +#: awx/api/serializers.py:2967 +msgid "BYYEARDAY not supported." +msgstr "BYYEARDAY no soportado." + +#: awx/api/serializers.py:2969 +msgid "BYWEEKNO not supported." +msgstr "BYWEEKNO no soportado." + +#: awx/api/serializers.py:2973 +msgid "COUNT > 999 is unsupported." +msgstr "COUNT > 999 no está soportada." + +#: awx/api/serializers.py:2977 +msgid "rrule parsing failed validation." +msgstr "Validación fallida analizando 'rrule'" + +#: awx/api/serializers.py:3012 +msgid "" +"A summary of the new and changed values when an object is created, updated, " +"or deleted" +msgstr "" +"Un resumen de los valores nuevos y cambiados cuando un objeto es creado, " +"actualizado o eliminado." + +#: awx/api/serializers.py:3014 +msgid "" +"For create, update, and delete events this is the object type that was " +"affected. For associate and disassociate events this is the object type " +"associated or disassociated with object2." +msgstr "" +"Para crear, actualizar y eliminar eventos éste es el tipo de objeto que fue " +"afectado. Para asociar o desasociar eventos éste es el tipo de objeto " +"asociado o desasociado con object2." + +#: awx/api/serializers.py:3017 +msgid "" +"Unpopulated for create, update, and delete events. For associate and " +"disassociate events this is the object type that object1 is being associated " +"with." +msgstr "" +"Vacío para crear, actualizar y eliminar eventos. Para asociar y desasociar " +"eventos éste es el tipo de objetos que object1 con el está asociado." + +#: awx/api/serializers.py:3020 +msgid "The action taken with respect to the given object(s)." +msgstr "La acción tomada al respeto al/los especificado(s) objeto(s)." + +#: awx/api/serializers.py:3123 +msgid "Unable to login with provided credentials." +msgstr "Incapaz de iniciar sesión con los credenciales indicados." + +#: awx/api/serializers.py:3125 +msgid "Must include \"username\" and \"password\"." +msgstr "Debe incluir \"usuario\" y \"contraseña\"." + +#: awx/api/views.py:102 +msgid "Your license does not allow use of the activity stream." +msgstr "Su licencia no permite el uso de flujo de actividad." + +#: awx/api/views.py:112 +msgid "Your license does not permit use of system tracking." +msgstr "Su licencia no permite el uso de sistema de rastreo." + +#: awx/api/views.py:122 +msgid "Your license does not allow use of workflows." +msgstr "Su licencia no permite el uso de flujos de trabajo." + +#: awx/api/views.py:130 awx/templates/rest_framework/api.html:28 +msgid "REST API" +msgstr "REST API" + +#: awx/api/views.py:137 awx/templates/rest_framework/api.html:4 +msgid "Ansible Tower REST API" +msgstr "Ansible Tower REST API" + +#: awx/api/views.py:153 +msgid "Version 1" +msgstr "Version 1" + +#: awx/api/views.py:204 +msgid "Ping" +msgstr "Ping" + +#: awx/api/views.py:233 awx/conf/apps.py:12 +msgid "Configuration" +msgstr "Configuración" + +#: awx/api/views.py:286 +msgid "Invalid license data" +msgstr "Datos de licencia inválidos." + +#: awx/api/views.py:288 +msgid "Missing 'eula_accepted' property" +msgstr "Propiedad 'eula_accepted' no encontrada" + +#: awx/api/views.py:292 +msgid "'eula_accepted' value is invalid" +msgstr "Valor 'eula_accepted' no es válido" + +#: awx/api/views.py:295 +msgid "'eula_accepted' must be True" +msgstr "'eula_accepted' debe ser True" + +#: awx/api/views.py:302 +msgid "Invalid JSON" +msgstr "JSON inválido" + +#: awx/api/views.py:310 +msgid "Invalid License" +msgstr "Licencia inválida" + +#: awx/api/views.py:320 +msgid "Invalid license" +msgstr "Licencia inválida" + +#: awx/api/views.py:328 +#, python-format +msgid "Failed to remove license (%s)" +msgstr "Error al eliminar licencia (%s)" + +#: awx/api/views.py:333 +msgid "Dashboard" +msgstr "Panel de control" + +#: awx/api/views.py:439 +msgid "Dashboard Jobs Graphs" +msgstr "Panel de control de gráficas de trabajo" + +#: awx/api/views.py:475 +#, python-format +msgid "Unknown period \"%s\"" +msgstr "Periodo desconocido \"%s\"" + +#: awx/api/views.py:489 +msgid "Schedules" +msgstr "Programaciones" + +#: awx/api/views.py:508 +msgid "Schedule Jobs List" +msgstr "Lista de trabajos programados" + +#: awx/api/views.py:727 +msgid "Your Tower license only permits a single organization to exist." +msgstr "Su licencia de Tower sólo permite que exista una organización." + +#: awx/api/views.py:952 awx/api/views.py:1311 +msgid "Role 'id' field is missing." +msgstr "El campo de rol 'id' no encontrado." + +#: awx/api/views.py:958 awx/api/views.py:4129 +msgid "You cannot assign an Organization role as a child role for a Team." +msgstr "No puede asignar un rol de organización como rol hijo para un equipo." + +#: awx/api/views.py:962 awx/api/views.py:4143 +msgid "You cannot grant system-level permissions to a team." +msgstr "No puede asignar permisos de nivel de sistema a un equipo." + +#: awx/api/views.py:969 awx/api/views.py:4135 +msgid "" +"You cannot grant credential access to a team when the Organization field " +"isn't set, or belongs to a different organization" +msgstr "" +"No puede asignar credenciales de acceso a un equipo cuando el campo de " +"organización no está establecido o pertenezca a una organización diferente." + +#: awx/api/views.py:1059 +msgid "Cannot delete project." +msgstr "No se puede eliminar el proyecto." + +#: awx/api/views.py:1088 +msgid "Project Schedules" +msgstr "Programación del proyecto" + +#: awx/api/views.py:1192 awx/api/views.py:2285 awx/api/views.py:3298 +msgid "Cannot delete job resource when associated workflow job is running." +msgstr "" +"No es posible eliminar un recurso de trabajo cuando la tarea del flujo de " +"trabajo está en ejecución." + +#: awx/api/views.py:1269 +msgid "Me" +msgstr "Yo" + +#: awx/api/views.py:1315 awx/api/views.py:4084 +msgid "You may not perform any action with your own admin_role." +msgstr "No puede realizar ninguna acción con su admin_role." + +#: awx/api/views.py:1321 awx/api/views.py:4088 +msgid "You may not change the membership of a users admin_role" +msgstr "No puede cambiar la pertenencia a usuarios admin_role" + +#: awx/api/views.py:1326 awx/api/views.py:4093 +msgid "" +"You cannot grant credential access to a user not in the credentials' " +"organization" +msgstr "" +"No puede conceder credenciales de acceso a un usuario que no está en la " +"organización del credencial." + +#: awx/api/views.py:1330 awx/api/views.py:4097 +msgid "You cannot grant private credential access to another user" +msgstr "No puede conceder acceso a un credencial privado a otro usuario" + +#: awx/api/views.py:1428 +#, python-format +msgid "Cannot change %s." +msgstr "No se puede cambiar %s." + +#: awx/api/views.py:1434 +msgid "Cannot delete user." +msgstr "No se puede eliminar usuario." + +#: awx/api/views.py:1583 +msgid "Cannot delete inventory script." +msgstr "No se puede eliminar script de inventario." + +#: awx/api/views.py:1820 +msgid "Fact not found." +msgstr "Fact no encontrado." + +#: awx/api/views.py:2140 +msgid "Inventory Source List" +msgstr "Listado de fuentes del inventario" + +#: awx/api/views.py:2168 +msgid "Cannot delete inventory source." +msgstr "No se puede eliminar la fuente del inventario." + +#: awx/api/views.py:2176 +msgid "Inventory Source Schedules" +msgstr "Programaciones de la fuente del inventario" + +#: awx/api/views.py:2206 +msgid "Notification Templates can only be assigned when source is one of {}." +msgstr "" +"Plantillas de notificación pueden ser sólo asignadas cuando la fuente es una " +"de estas {}." + +#: awx/api/views.py:2414 +msgid "Job Template Schedules" +msgstr "Programación plantilla de trabajo" + +#: awx/api/views.py:2434 awx/api/views.py:2450 +msgid "Your license does not allow adding surveys." +msgstr "Su licencia no permite añadir cuestionarios." + +#: awx/api/views.py:2457 +msgid "'name' missing from survey spec." +msgstr "'name' no encontrado en el especificado cuestionario." + +#: awx/api/views.py:2459 +msgid "'description' missing from survey spec." +msgstr "'description' no encontrado en el especificado cuestionario." + +#: awx/api/views.py:2461 +msgid "'spec' missing from survey spec." +msgstr "'spec' no encontrado en el especificado cuestionario." + +#: awx/api/views.py:2463 +msgid "'spec' must be a list of items." +msgstr "'spec' debe ser una lista de elementos." + +#: awx/api/views.py:2465 +msgid "'spec' doesn't contain any items." +msgstr "'spec' no contiene ningún elemento." + +#: awx/api/views.py:2471 +#, python-format +msgid "Survey question %s is not a json object." +msgstr "Pregunta de cuestionario %s no es un objeto JSON." + +#: awx/api/views.py:2473 +#, python-format +msgid "'type' missing from survey question %s." +msgstr "'type' no encontrado en la pregunta de cuestionario %s." + +#: awx/api/views.py:2475 +#, python-format +msgid "'question_name' missing from survey question %s." +msgstr "'question_name' no aparece en la pregunta de cuestionario %s." + +#: awx/api/views.py:2477 +#, python-format +msgid "'variable' missing from survey question %s." +msgstr "'variable' no encontrado en la pregunta de cuestionario %s." + +#: awx/api/views.py:2479 +#, python-format +msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." +msgstr "" +"'variable' '%(item)s' repetida en la pregunta de cuestionario %(survey)s." + +#: awx/api/views.py:2484 +#, python-format +msgid "'required' missing from survey question %s." +msgstr "'required' no encontrado en la pregunta de cuestionario %s." + +#: awx/api/views.py:2569 +msgid "Maximum number of labels for {} reached." +msgstr "Número máximo de etiquetas para {} alcanzado." + +#: awx/api/views.py:2698 +msgid "No matching host could be found!" +msgstr "¡Ningún servidor indicado pudo ser encontrado!" + +#: awx/api/views.py:2701 +msgid "Multiple hosts matched the request!" +msgstr "¡Varios servidores corresponden a la petición!" + +#: awx/api/views.py:2706 +msgid "Cannot start automatically, user input required!" +msgstr "" +"No se puede iniciar automáticamente, !Entrada de datos de usuario necesaria!" + +#: awx/api/views.py:2713 +msgid "Host callback job already pending." +msgstr "Trabajo de callback para el servidor ya está pendiente." + +#: awx/api/views.py:2726 +msgid "Error starting job!" +msgstr "¡Error iniciando trabajo!" + +#: awx/api/views.py:3055 +msgid "Workflow Job Template Schedules" +msgstr "Programaciones de plantilla de tareas de flujo de trabajo" + +#: awx/api/views.py:3197 awx/api/views.py:3745 +msgid "Superuser privileges needed." +msgstr "Privilegios de superusuario necesarios." + +#: awx/api/views.py:3229 +msgid "System Job Template Schedules" +msgstr "Programación de plantilla de trabajos de sistema." + +#: awx/api/views.py:3421 +msgid "Job Host Summaries List" +msgstr "Lista resumida de trabajos de servidor" + +#: awx/api/views.py:3468 +msgid "Job Event Children List" +msgstr "LIsta de hijos de eventos de trabajo" + +#: awx/api/views.py:3477 +msgid "Job Event Hosts List" +msgstr "Lista de eventos de trabajos de servidor." + +#: awx/api/views.py:3486 +msgid "Job Events List" +msgstr "Lista de eventos de trabajo" + +#: awx/api/views.py:3699 +msgid "Ad Hoc Command Events List" +msgstr "Lista de eventos para comando Ad Hoc" + +#: awx/api/views.py:3897 +msgid "Error generating stdout download file: {}" +msgstr "Error generando la descarga del fichero de salida estándar: {}" + +#: awx/api/views.py:3910 +#, python-format +msgid "Error generating stdout download file: %s" +msgstr "Error generando la descarga del fichero de salida estándar: %s" + +#: awx/api/views.py:3955 +msgid "Delete not allowed while there are pending notifications" +msgstr "Eliminar no está permitido mientras existan notificaciones pendientes" + +#: awx/api/views.py:3962 +msgid "Notification Template Test" +msgstr "Prueba de plantilla de notificación" + +#: awx/api/views.py:4078 +msgid "User 'id' field is missing." +msgstr "Campo de usuario 'id' no encontrado." + +#: awx/api/views.py:4121 +msgid "Team 'id' field is missing." +msgstr "Campo de equipo 'id' no encontrado." + +#: awx/conf/conf.py:20 +msgid "Bud Frogs" +msgstr "Bud Frogs" + +#: awx/conf/conf.py:21 +msgid "Bunny" +msgstr "Bunny" + +#: awx/conf/conf.py:22 +msgid "Cheese" +msgstr "Cheese" + +#: awx/conf/conf.py:23 +msgid "Daemon" +msgstr "Daemon" + +#: awx/conf/conf.py:24 +msgid "Default Cow" +msgstr "Default Cow" + +#: awx/conf/conf.py:25 +msgid "Dragon" +msgstr "Dragon" + +#: awx/conf/conf.py:26 +msgid "Elephant in Snake" +msgstr "Elephant in Snake" + +#: awx/conf/conf.py:27 +msgid "Elephant" +msgstr "Elephant" + +#: awx/conf/conf.py:28 +msgid "Eyes" +msgstr "Eyes" + +#: awx/conf/conf.py:29 +msgid "Hello Kitty" +msgstr "Hello Kitty" + +#: awx/conf/conf.py:30 +msgid "Kitty" +msgstr "Kitty" + +#: awx/conf/conf.py:31 +msgid "Luke Koala" +msgstr "Luke Koala" + +#: awx/conf/conf.py:32 +msgid "Meow" +msgstr "Meow" + +#: awx/conf/conf.py:33 +msgid "Milk" +msgstr "Milk" + +#: awx/conf/conf.py:34 +msgid "Moofasa" +msgstr "Moofasa" + +#: awx/conf/conf.py:35 +msgid "Moose" +msgstr "Moose" + +#: awx/conf/conf.py:36 +msgid "Ren" +msgstr "Ren" + +#: awx/conf/conf.py:37 +msgid "Sheep" +msgstr "Sheep" + +#: awx/conf/conf.py:38 +msgid "Small Cow" +msgstr "Small Cow" + +#: awx/conf/conf.py:39 +msgid "Stegosaurus" +msgstr "Stegosaurus" + +#: awx/conf/conf.py:40 +msgid "Stimpy" +msgstr "Stimpy" + +#: awx/conf/conf.py:41 +msgid "Super Milker" +msgstr "Super Milker" + +#: awx/conf/conf.py:42 +msgid "Three Eyes" +msgstr "Three Eyes" + +#: awx/conf/conf.py:43 +msgid "Turkey" +msgstr "Turkey" + +#: awx/conf/conf.py:44 +msgid "Turtle" +msgstr "Turtle" + +#: awx/conf/conf.py:45 +msgid "Tux" +msgstr "Tux" + +#: awx/conf/conf.py:46 +msgid "Udder" +msgstr "Udder" + +#: awx/conf/conf.py:47 +msgid "Vader Koala" +msgstr "Vader Koala" + +#: awx/conf/conf.py:48 +msgid "Vader" +msgstr "Vader" + +#: awx/conf/conf.py:49 +msgid "WWW" +msgstr "WWW" + +#: awx/conf/conf.py:52 +msgid "Cow Selection" +msgstr "Cow Selection" + +#: awx/conf/conf.py:53 +msgid "Select which cow to use with cowsay when running jobs." +msgstr "" +"Seleccione con cual 'cow' debe ser utilizado cowsay mientras ejecuta " +"trabajos." + +#: awx/conf/conf.py:54 awx/conf/conf.py:75 +msgid "Cows" +msgstr "Cows" + +#: awx/conf/conf.py:73 +msgid "Example Read-Only Setting" +msgstr "Ejemplo de ajuste de sólo lectura.f" + +#: awx/conf/conf.py:74 +msgid "Example setting that cannot be changed." +msgstr "Ejemplo de ajuste que no puede ser cambiado." + +#: awx/conf/conf.py:93 +msgid "Example Setting" +msgstr "Ejemplo de ajuste" + +#: awx/conf/conf.py:94 +msgid "Example setting which can be different for each user." +msgstr "Ejemplo de configuración que puede ser diferente para cada usuario." + +#: awx/conf/conf.py:95 awx/conf/registry.py:76 awx/conf/views.py:46 +msgid "User" +msgstr "Usuario" + +#: awx/conf/fields.py:38 +msgid "Enter a valid URL" +msgstr "Introduzca una URL válida" + +#: awx/conf/license.py:19 +msgid "Your Tower license does not allow that." +msgstr "Su licencia Tower no permite eso." + +#: awx/conf/management/commands/migrate_to_database_settings.py:41 +msgid "Only show which settings would be commented/migrated." +msgstr "Sólo mostrar los ajustes que serán comentados/migrados." + +#: awx/conf/management/commands/migrate_to_database_settings.py:48 +msgid "Skip over settings that would raise an error when commenting/migrating." +msgstr "Omitir los ajustes que causarán un error cuando comentando/migrando." + +#: awx/conf/management/commands/migrate_to_database_settings.py:55 +msgid "Skip commenting out settings in files." +msgstr "Omitir la entrada de comentarios para ajustes en ficheros." + +#: awx/conf/management/commands/migrate_to_database_settings.py:61 +msgid "Backup existing settings files with this suffix." +msgstr "" +"Hacer copia de seguridad de todos los ficheros de configuración existentes " +"con este sufijo." + +#: awx/conf/registry.py:64 awx/conf/tests/unit/test_registry.py:169 +#: awx/conf/tests/unit/test_registry.py:192 +#: awx/conf/tests/unit/test_registry.py:196 +#: awx/conf/tests/unit/test_registry.py:201 +#: awx/conf/tests/unit/test_registry.py:208 +msgid "All" +msgstr "Todos" + +#: awx/conf/registry.py:65 awx/conf/tests/unit/test_registry.py:170 +#: awx/conf/tests/unit/test_registry.py:193 +#: awx/conf/tests/unit/test_registry.py:197 +#: awx/conf/tests/unit/test_registry.py:202 +#: awx/conf/tests/unit/test_registry.py:209 +msgid "Changed" +msgstr "Cambiado" + +#: awx/conf/registry.py:77 +msgid "User-Defaults" +msgstr "Parámetros de usuario por defecto" + +#: awx/conf/registry.py:133 +msgid "This value has been set manually in a settings file." +msgstr "" +"Este valor ha sido establecido manualmente en el fichero de configuración." + +#: awx/conf/tests/unit/test_registry.py:46 +#: awx/conf/tests/unit/test_registry.py:56 +#: awx/conf/tests/unit/test_registry.py:72 +#: awx/conf/tests/unit/test_registry.py:87 +#: awx/conf/tests/unit/test_registry.py:100 +#: awx/conf/tests/unit/test_registry.py:106 +#: awx/conf/tests/unit/test_registry.py:126 +#: awx/conf/tests/unit/test_registry.py:140 +#: awx/conf/tests/unit/test_registry.py:146 +#: awx/conf/tests/unit/test_registry.py:159 +#: awx/conf/tests/unit/test_registry.py:171 +#: awx/conf/tests/unit/test_registry.py:180 +#: awx/conf/tests/unit/test_registry.py:198 +#: awx/conf/tests/unit/test_registry.py:210 +#: awx/conf/tests/unit/test_registry.py:219 +#: awx/conf/tests/unit/test_registry.py:225 +#: awx/conf/tests/unit/test_registry.py:237 +#: awx/conf/tests/unit/test_registry.py:245 +#: awx/conf/tests/unit/test_registry.py:288 +#: awx/conf/tests/unit/test_registry.py:306 +#: awx/conf/tests/unit/test_settings.py:68 +#: awx/conf/tests/unit/test_settings.py:86 +#: awx/conf/tests/unit/test_settings.py:101 +#: awx/conf/tests/unit/test_settings.py:116 +#: awx/conf/tests/unit/test_settings.py:132 +#: awx/conf/tests/unit/test_settings.py:145 +#: awx/conf/tests/unit/test_settings.py:162 +#: awx/conf/tests/unit/test_settings.py:178 +#: awx/conf/tests/unit/test_settings.py:189 +#: awx/conf/tests/unit/test_settings.py:205 +#: awx/conf/tests/unit/test_settings.py:226 +#: awx/conf/tests/unit/test_settings.py:249 +#: awx/conf/tests/unit/test_settings.py:263 +#: awx/conf/tests/unit/test_settings.py:287 +#: awx/conf/tests/unit/test_settings.py:307 +#: awx/conf/tests/unit/test_settings.py:324 +#: awx/conf/tests/unit/test_settings.py:337 +#: awx/conf/tests/unit/test_settings.py:351 +#: awx/conf/tests/unit/test_settings.py:387 awx/main/conf.py:19 +#: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 +#: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 +msgid "System" +msgstr "Sistema" + +#: awx/conf/tests/unit/test_registry.py:165 +#: awx/conf/tests/unit/test_registry.py:172 +#: awx/conf/tests/unit/test_registry.py:187 +#: awx/conf/tests/unit/test_registry.py:203 +#: awx/conf/tests/unit/test_registry.py:211 +msgid "OtherSystem" +msgstr "Otro sistema" + +#: awx/conf/views.py:38 +msgid "Setting Categories" +msgstr "Categorías de ajustes" + +#: awx/conf/views.py:61 +msgid "Setting Detail" +msgstr "Detalles del ajuste" + +#: awx/main/access.py:266 +#, python-format +msgid "Bad data found in related field %s." +msgstr "Dato incorrecto encontrado en el campo relacionado %s." + +#: awx/main/access.py:307 +msgid "License is missing." +msgstr "Licencia no encontrada." + +#: awx/main/access.py:309 +msgid "License has expired." +msgstr "La licencia ha expirado." + +#: awx/main/access.py:317 +#, python-format +msgid "License count of %s instances has been reached." +msgstr "El número de licencias de instancias %s ha sido alcanzado." + +#: awx/main/access.py:319 +#, python-format +msgid "License count of %s instances has been exceeded." +msgstr "El número de licencias de instancias %s ha sido excedido." + +#: awx/main/access.py:321 +msgid "Host count exceeds available instances." +msgstr "El número de servidores excede las instancias disponibles." + +#: awx/main/access.py:325 +#, python-format +msgid "Feature %s is not enabled in the active license." +msgstr "Funcionalidad %s no está habilitada en la licencia activa." + +#: awx/main/access.py:327 +msgid "Features not found in active license." +msgstr "Funcionalidades no encontradas en la licencia activa." + +#: awx/main/access.py:525 awx/main/access.py:592 awx/main/access.py:717 +#: awx/main/access.py:987 awx/main/access.py:1222 awx/main/access.py:1619 +msgid "Resource is being used by running jobs" +msgstr "Recurso está siendo usado por trabajos en ejecución" + +#: awx/main/access.py:636 +msgid "Unable to change inventory on a host." +msgstr "Imposible modificar el inventario en un servidor." + +#: awx/main/access.py:653 awx/main/access.py:698 +msgid "Cannot associate two items from different inventories." +msgstr "No es posible asociar dos elementos de diferentes inventarios." + +#: awx/main/access.py:686 +msgid "Unable to change inventory on a group." +msgstr "Imposible cambiar el inventario en un grupo." + +#: awx/main/access.py:907 +msgid "Unable to change organization on a team." +msgstr "Imposible cambiar la organización en un equipo." + +#: awx/main/access.py:920 +msgid "The {} role cannot be assigned to a team" +msgstr "El rol {} no puede ser asignado a un equipo." + +#: awx/main/access.py:922 +msgid "The admin_role for a User cannot be assigned to a team" +msgstr "El admin_role para un usuario no puede ser asignado a un equipo" + +#: awx/main/access.py:1692 +msgid "" +"You do not have permission to the workflow job resources required for " +"relaunch." +msgstr "" +"Usted no tiene el permiso a los recursos de la tarea de flujo de trabajo " +"necesarios para relanzar. " + +#: awx/main/apps.py:9 +msgid "Main" +msgstr "Principal" + +#: awx/main/conf.py:17 +msgid "Enable Activity Stream" +msgstr "Activar flujo de actividad" + +#: awx/main/conf.py:18 +msgid "Enable capturing activity for the Tower activity stream." +msgstr "Activar la captura de actividades para el flujo de actividad de Tower." + +#: awx/main/conf.py:27 +msgid "Enable Activity Stream for Inventory Sync" +msgstr "Habilitar el flujo de actividad para la sincronización de inventarios." + +#: awx/main/conf.py:28 +msgid "" +"Enable capturing activity for the Tower activity stream when running " +"inventory sync." +msgstr "" +"Habilitar la captura de actividades para el flujo de actividad de Tower " +"mientras se ejecuta una sincronización de inventario." + +#: awx/main/conf.py:37 +msgid "All Users Visible to Organization Admins" +msgstr "" +"Todos los usuarios visibles para los administradores de la organización." + +#: awx/main/conf.py:38 +msgid "" +"Controls whether any Organization Admin can view all users, even those not " +"associated with their Organization." +msgstr "" +"Controla si cualquier administrador de organización pede ver todos los " +"usuarios, incluso aquellos que no están asociados a su organización." + +#: awx/main/conf.py:46 +msgid "Enable Tower Administrator Alerts" +msgstr "Habilitar alertas de administrador de Tower." + +#: awx/main/conf.py:47 +msgid "" +"Allow Tower to email Admin users for system events that may require " +"attention." +msgstr "" +"Permitir a Tower enviar correo a usuarios Admin para eventos del sistema que " +"puedan requerir su atención." + +#: awx/main/conf.py:57 +msgid "Base URL of the Tower host" +msgstr "Dirección base URL para el servidor Tower" + +#: awx/main/conf.py:58 +msgid "" +"This setting is used by services like notifications to render a valid url to " +"the Tower host." +msgstr "" +"Este configuración es utilizada por servicios cono notificaciones para " +"mostrar una url válida al servidor Tower." + +#: awx/main/conf.py:67 +msgid "Remote Host Headers" +msgstr "Cabeceras de servidor remoto" + +#: awx/main/conf.py:68 +msgid "" +"HTTP headers and meta keys to search to determine remote host name or IP. " +"Add additional items to this list, such as \"HTTP_X_FORWARDED_FOR\", if " +"behind a reverse proxy.\n" +"\n" +"Note: The headers will be searched in order and the first found remote host " +"name or IP will be used.\n" +"\n" +"In the below example 8.8.8.7 would be the chosen IP address.\n" +"X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" +"Host: 127.0.0.1\n" +"REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']" +msgstr "" +"Cabeceras HTTP y claves-meta para buscar determinado nombre de servidor o " +"IP. Añadir elementos adicionales a la lista, como \"HTTP_X_FORWARDED_FOR\", " +"si se está detrás de un proxy inverso.\n" +"\n" +"Note: Las cabeceras serán buscadas en el orden y el primer servidor remoto " +"encontrado a través del nombre de servidor o IP, será utilizado.\n" +"\n" +"En el siguiente ejemplo, la dirección IP 8.8.8.7 debería ser escogida.\n" +"X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" +"Host: 127.0.0.1\n" +"REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']" + +#: awx/main/conf.py:99 +msgid "Tower License" +msgstr "Licencia Tower" + +#: awx/main/conf.py:100 +msgid "" +"The license controls which features and functionality are enabled in Tower. " +"Use /api/v1/config/ to update or change the license." +msgstr "" +"La licencia controla las funcionalidades y funciones habilitadas en Tower. " +"Use /api/v1/config/ para actualizar o cambiar la licencia." + +#: awx/main/conf.py:110 +msgid "Ansible Modules Allowed for Ad Hoc Jobs" +msgstr "Módulos Ansible autorizados para ejecutar trabajos Ad Hoc" + +#: awx/main/conf.py:111 +msgid "List of modules allowed to be used by ad-hoc jobs." +msgstr "Lista de módulos permitidos para su uso con trabajos ad-hoc." + +#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 +#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 +#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 +#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +msgid "Jobs" +msgstr "Trabajos" + +#: awx/main/conf.py:119 +msgid "Enable job isolation" +msgstr "Habilitar aislamiento de trabajo" + +#: awx/main/conf.py:120 +msgid "" +"Isolates an Ansible job from protected parts of the Tower system to prevent " +"exposing sensitive information." +msgstr "" +"Aísla un trabajo Ansible de partes protegidas del sistema Tower para " +"prevenir la exposición de información sensible." + +#: awx/main/conf.py:128 +msgid "Job isolation execution path" +msgstr "Ruta de ejecución de un trabajo aislado" + +#: awx/main/conf.py:129 +msgid "" +"Create temporary working directories for isolated jobs in this location." +msgstr "" +"Crear directorios de trabajo temporales en esta ubicación para trabajos " +"aislados." + +#: awx/main/conf.py:138 +msgid "Paths to hide from isolated jobs" +msgstr "Rutas a ocultar para los trabajos aislados." + +#: awx/main/conf.py:139 +msgid "Additional paths to hide from isolated processes." +msgstr "Rutas adicionales a aislar para los procesos aislados." + +#: awx/main/conf.py:148 +msgid "Paths to expose to isolated jobs" +msgstr "Rutas a exponer para los trabajos aislados." + +#: awx/main/conf.py:149 +msgid "" +"Whitelist of paths that would otherwise be hidden to expose to isolated jobs." +msgstr "" +"Lista blanca de rutas que de otra manera serían escondidas para exponer a " +"trabajos aislados." + +#: awx/main/conf.py:158 +msgid "Standard Output Maximum Display Size" +msgstr "Tamaño máximo a mostrar para la salida estándar." + +#: awx/main/conf.py:159 +msgid "" +"Maximum Size of Standard Output in bytes to display before requiring the " +"output be downloaded." +msgstr "" +"Tamaño máximo de la salida estándar en bytes para mostrar antes de obligar a " +"que la salida sea descargada." + +#: awx/main/conf.py:168 +msgid "Job Event Standard Output Maximum Display Size" +msgstr "" +"Tamaño máximo de la salida estándar para mostrar del evento del trabajo." + +#: awx/main/conf.py:169 +msgid "" +"Maximum Size of Standard Output in bytes to display for a single job or ad " +"hoc command event. `stdout` will end with `…` when truncated." +msgstr "" +"Tamaño máximo de la salida estándar en bytes a mostrar para un único trabajo " +"o evento del comando ad hoc. `stdout` terminará con `...` cuando sea " +"truncado." + +#: awx/main/conf.py:178 +msgid "Maximum Scheduled Jobs" +msgstr "Máximo número de trabajos programados." + +#: awx/main/conf.py:179 +msgid "" +"Maximum number of the same job template that can be waiting to run when " +"launching from a schedule before no more are created." +msgstr "" +"Número máximo de la misma plantilla de trabajo que pueden estar esperando " +"para ser ejecutado cuando se lanzan desde una programación antes de que no " +"se creen más." + +#: awx/main/conf.py:188 +msgid "Ansible Callback Plugins" +msgstr "Plugins de Ansible callback" + +#: awx/main/conf.py:189 +msgid "" +"List of paths to search for extra callback plugins to be used when running " +"jobs." +msgstr "" +"Lista de rutas a buscar para plugins callback adicionales a ser utilizados " +"cuando se ejecutan trabajos." + +#: awx/main/conf.py:199 +msgid "Default Job Timeout" +msgstr "Tiempo de espera por defecto para el trabajo" + +#: awx/main/conf.py:200 +msgid "" +"Maximum time to allow jobs to run. Use value of 0 to indicate that no " +"timeout should be imposed. A timeout set on an individual job template will " +"override this." +msgstr "" +"Tiempo máximo para permitir trabajos a ejecutar. Utilice el valor 0 para " +"indicar que ningún tiempo de espera será impuesto. Un tiempo de espera " +"establecido en una plantilla de trabajo individual reemplazará éste." + +#: awx/main/conf.py:211 +msgid "Default Inventory Update Timeout" +msgstr "Tiempo de espera por defecto para la actualización del inventario." + +#: awx/main/conf.py:212 +msgid "" +"Maximum time to allow inventory updates to run. Use value of 0 to indicate " +"that no timeout should be imposed. A timeout set on an individual inventory " +"source will override this." +msgstr "" +"Tiempo máximo a permitir la ejecución de una actualización del inventario. " +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " +"tiempo de espera establecido en una fuente de inventario individual " +"reemplazará éste." + +#: awx/main/conf.py:223 +msgid "Default Project Update Timeout" +msgstr "Tiempo de espera por defecto para la actualización de un proyecto" + +#: awx/main/conf.py:224 +msgid "" +"Maximum time to allow project updates to run. Use value of 0 to indicate " +"that no timeout should be imposed. A timeout set on an individual project " +"will override this." +msgstr "" +"Tiempo máximo a permitir la ejecución de una actualización del proyecto. " +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " +"tiempo de espera establecido en una plantilla individual reemplazará éste." + +#: awx/main/conf.py:234 +msgid "Logging Aggregator" +msgstr "Agregación de registros" + +#: awx/main/conf.py:235 +msgid "Hostname/IP where external logs will be sent to." +msgstr "Hostname/IP donde los logs externos serán enviados." + +#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 +#: awx/main/conf.py:264 awx/main/conf.py:275 awx/main/conf.py:290 +#: awx/main/conf.py:302 awx/main/conf.py:311 +msgid "Logging" +msgstr "Registros" + +#: awx/main/conf.py:243 +msgid "Logging Aggregator Port" +msgstr "Puerto de agregación de registros" + +#: awx/main/conf.py:244 +msgid "Port on Logging Aggregator to send logs to (if required)." +msgstr "" +"Puerto en el agregador de registros donde enviar los registros (si es " +"necesario)." + +#: awx/main/conf.py:253 +msgid "Logging Aggregator Type" +msgstr "Tipo de agregación de registros." + +#: awx/main/conf.py:254 +msgid "Format messages for the chosen log aggregator." +msgstr "Formato de mensajes para el agregador de registros escogidos." + +#: awx/main/conf.py:262 +msgid "Logging Aggregator Username" +msgstr "Usuario del agregador de registros" + +#: awx/main/conf.py:263 +msgid "Username for external log aggregator (if required)." +msgstr "Usuario para el agregador de registros externo (si es necesario)." + +#: awx/main/conf.py:273 +msgid "Logging Aggregator Password/Token" +msgstr "Contraseña/Token del agregador de registros" + +#: awx/main/conf.py:274 +msgid "" +"Password or authentication token for external log aggregator (if required)." +msgstr "" +"Contraseña o token de autentificación para el agregador de registros externo " +"(si es necesario)." + +#: awx/main/conf.py:283 +msgid "Loggers to send data to the log aggregator from" +msgstr "Registrados desde los que enviar los datos de los registros agregados" + +#: awx/main/conf.py:284 +msgid "" +"List of loggers that will send HTTP logs to the collector, these can include " +"any or all of: \n" +"awx - Tower service logs\n" +"activity_stream - activity stream records\n" +"job_events - callback data from Ansible job events\n" +"system_tracking - facts gathered from scan jobs." +msgstr "" +"Lista de registradores que enviarán registros HTTP al colector, éstos pueden " +"incluir cualquier o todos ellos: \n" +"awx - Servicio de registros Tower\n" +"activity_stream - Registros de flujo de actividad\n" +"job_events - Datos callback desde los eventos de trabajo Ansible\n" +"system_tracking - Facts obtenidos por los trabajos escaneados." + +#: awx/main/conf.py:297 +msgid "Log System Tracking Facts Individually" +msgstr "Sistema de registros tratará los facts individualmente." + +#: awx/main/conf.py:298 +msgid "" +"If set, system tracking facts will be sent for each package, service, " +"orother item found in a scan, allowing for greater search query granularity. " +"If unset, facts will be sent as a single dictionary, allowing for greater " +"efficiency in fact processing." +msgstr "" +"Si se establece, los facts del sistema de rastreo serán enviados por cada " +"paquete, servicio u otro elemento encontrado en el escaneo, permitiendo " +"mayor granularidad en la consulta de búsqueda. Si no se establece, lo facts " +"serán enviados como un único diccionario, permitiendo mayor eficiencia en el " +"proceso de facts." + +#: awx/main/conf.py:309 +msgid "Enable External Logging" +msgstr "Habilitar registro externo" + +#: awx/main/conf.py:310 +msgid "Enable sending logs to external log aggregator." +msgstr "Habilitar el envío de registros a un agregador de registros externo." + +#: awx/main/models/activity_stream.py:22 +msgid "Entity Created" +msgstr "Entidad creada" + +#: awx/main/models/activity_stream.py:23 +msgid "Entity Updated" +msgstr "Entidad actualizada" + +#: awx/main/models/activity_stream.py:24 +msgid "Entity Deleted" +msgstr "Entidad eliminada" + +#: awx/main/models/activity_stream.py:25 +msgid "Entity Associated with another Entity" +msgstr "Entidad asociada con otra entidad" + +#: awx/main/models/activity_stream.py:26 +msgid "Entity was Disassociated with another Entity" +msgstr "La entidad fue desasociada de otra entidad" + +#: awx/main/models/ad_hoc_commands.py:96 +msgid "No valid inventory." +msgstr "Inventario no válido" + +#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:160 +msgid "You must provide a machine / SSH credential." +msgstr "Debe proporcionar un credencial de máquina / SSH." + +#: awx/main/models/ad_hoc_commands.py:114 +#: awx/main/models/ad_hoc_commands.py:122 +msgid "Invalid type for ad hoc command" +msgstr "Tipo inválido para comando ad hoc" + +#: awx/main/models/ad_hoc_commands.py:117 +msgid "Unsupported module for ad hoc commands." +msgstr "Módulo no soportado para comandos ad hoc." + +#: awx/main/models/ad_hoc_commands.py:125 +#, python-format +msgid "No argument passed to %s module." +msgstr "Ningún argumento pasado al módulo %s." + +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:752 +msgid "Host Failed" +msgstr "Servidor fallido" + +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:753 +msgid "Host OK" +msgstr "Servidor OK" + +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:756 +msgid "Host Unreachable" +msgstr "Servidor no alcanzable" + +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:755 +msgid "Host Skipped" +msgstr "Servidor omitido" + +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:783 +msgid "Debug" +msgstr "Debug" + +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:784 +msgid "Verbose" +msgstr "Nivel de detalle" + +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:785 +msgid "Deprecated" +msgstr "Obsoleto" + +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:786 +msgid "Warning" +msgstr "Advertencia" + +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:787 +msgid "System Warning" +msgstr "Advertencia del sistema" + +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:788 +#: awx/main/models/unified_jobs.py:64 +msgid "Error" +msgstr "Error" + +#: awx/main/models/base.py:45 awx/main/models/base.py:51 +#: awx/main/models/base.py:56 +msgid "Run" +msgstr "Ejecutar" + +#: awx/main/models/base.py:46 awx/main/models/base.py:52 +#: awx/main/models/base.py:57 +msgid "Check" +msgstr "Comprobar" + +#: awx/main/models/base.py:47 +msgid "Scan" +msgstr "Escanear" + +#: awx/main/models/base.py:61 +msgid "Read Inventory" +msgstr "Leer inventario" + +#: awx/main/models/base.py:62 +msgid "Edit Inventory" +msgstr "Editar inventario" + +#: awx/main/models/base.py:63 +msgid "Administrate Inventory" +msgstr "Administrar inventario" + +#: awx/main/models/base.py:64 +msgid "Deploy To Inventory" +msgstr "Desplegar al inventario" + +#: awx/main/models/base.py:65 +msgid "Deploy To Inventory (Dry Run)" +msgstr "Desplegar al inventario (Simulacro)" + +#: awx/main/models/base.py:66 +msgid "Scan an Inventory" +msgstr "Escanear un inventario" + +#: awx/main/models/base.py:67 +msgid "Create a Job Template" +msgstr "Crear una plantilla de trabajo" + +#: awx/main/models/credential.py:33 +msgid "Machine" +msgstr "Máquina" + +#: awx/main/models/credential.py:34 +msgid "Network" +msgstr "Red" + +#: awx/main/models/credential.py:35 +msgid "Source Control" +msgstr "Fuente de control" + +#: awx/main/models/credential.py:36 +msgid "Amazon Web Services" +msgstr "Amazon Web Services" + +#: awx/main/models/credential.py:37 +msgid "Rackspace" +msgstr "Rackspace" + +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +msgid "VMware vCenter" +msgstr "VMware vCenter" + +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +msgid "Red Hat Satellite 6" +msgstr "Red Hat Satellite 6" + +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +msgid "Red Hat CloudForms" +msgstr "Red Hat CloudForms" + +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +msgid "Google Compute Engine" +msgstr "Google Compute Engine" + +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +msgid "Microsoft Azure Classic (deprecated)" +msgstr "Microsoft Azure Classic (obsoleto)" + +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +msgid "Microsoft Azure Resource Manager" +msgstr "Microsoft Azure Resource Manager" + +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +msgid "OpenStack" +msgstr "OpenStack" + +#: awx/main/models/credential.py:48 +msgid "None" +msgstr "Ninguno" + +#: awx/main/models/credential.py:49 +msgid "Sudo" +msgstr "Sudo" + +#: awx/main/models/credential.py:50 +msgid "Su" +msgstr "Su" + +#: awx/main/models/credential.py:51 +msgid "Pbrun" +msgstr "Pbrun" + +#: awx/main/models/credential.py:52 +msgid "Pfexec" +msgstr "Pfexec" + +#: awx/main/models/credential.py:53 +msgid "DZDO" +msgstr "DZDO" + +#: awx/main/models/credential.py:54 +msgid "Pmrun" +msgstr "Pmrun" + +#: awx/main/models/credential.py:103 +msgid "Host" +msgstr "Servidor" + +#: awx/main/models/credential.py:104 +msgid "The hostname or IP address to use." +msgstr "El hostname o dirección IP a utilizar." + +#: awx/main/models/credential.py:110 +msgid "Username" +msgstr "Usuario" + +#: awx/main/models/credential.py:111 +msgid "Username for this credential." +msgstr "Usuario para este credencial" + +#: awx/main/models/credential.py:117 +msgid "Password" +msgstr "Contraseña" + +#: awx/main/models/credential.py:118 +msgid "" +"Password for this credential (or \"ASK\" to prompt the user for machine " +"credentials)." +msgstr "" +"Contraseña para este credencial (o \"ASK\" para solicitar al usuario por " +"credenciales de máquina)." + +#: awx/main/models/credential.py:125 +msgid "Security Token" +msgstr "Token de seguridad" + +#: awx/main/models/credential.py:126 +msgid "Security Token for this credential" +msgstr "Token de seguridad para este credencial" + +#: awx/main/models/credential.py:132 +msgid "Project" +msgstr "Proyecto" + +#: awx/main/models/credential.py:133 +msgid "The identifier for the project." +msgstr "El identificador para el proyecto" + +#: awx/main/models/credential.py:139 +msgid "Domain" +msgstr "Dominio" + +#: awx/main/models/credential.py:140 +msgid "The identifier for the domain." +msgstr "El identificador para el dominio." + +#: awx/main/models/credential.py:145 +msgid "SSH private key" +msgstr "Clave privada SSH" + +#: awx/main/models/credential.py:146 +msgid "RSA or DSA private key to be used instead of password." +msgstr "Clave privada RSA o DSA a ser utilizada en vez de una contraseña." + +#: awx/main/models/credential.py:152 +msgid "SSH key unlock" +msgstr "Desbloquear clave SSH" + +#: awx/main/models/credential.py:153 +msgid "" +"Passphrase to unlock SSH private key if encrypted (or \"ASK\" to prompt the " +"user for machine credentials)." +msgstr "" +"Frase de contraseña para desbloquear la clave privada SSH si está cifrada (o " +"\"ASK\" para solicitar al usuario por credenciales de máquina)." + +#: awx/main/models/credential.py:161 +msgid "Privilege escalation method." +msgstr "Método de elevación de privilegios." + +#: awx/main/models/credential.py:167 +msgid "Privilege escalation username." +msgstr "Usuario para la elevación de privilegios." + +#: awx/main/models/credential.py:173 +msgid "Password for privilege escalation method." +msgstr "Contraseña para el método de elevación de privilegios" + +#: awx/main/models/credential.py:179 +msgid "Vault password (or \"ASK\" to prompt the user)." +msgstr "Contraseña Vauklt (o \"ASK\" para solicitar al usuario)." + +#: awx/main/models/credential.py:183 +msgid "Whether to use the authorize mechanism." +msgstr "Si se utilizará el mecanismo de autentificación." + +#: awx/main/models/credential.py:189 +msgid "Password used by the authorize mechanism." +msgstr "Contraseña utilizada para el mecanismo de autentificación." + +#: awx/main/models/credential.py:195 +msgid "Client Id or Application Id for the credential" +msgstr "Id del cliente o Id de aplicación para el credencial" + +#: awx/main/models/credential.py:201 +msgid "Secret Token for this credential" +msgstr "Token secreto para este credencial" + +#: awx/main/models/credential.py:207 +msgid "Subscription identifier for this credential" +msgstr "Identificador de suscripción para este credencial" + +#: awx/main/models/credential.py:213 +msgid "Tenant identifier for this credential" +msgstr "Identificador de inquilino [Tenant] para este credencial" + +#: awx/main/models/credential.py:283 +msgid "Host required for VMware credential." +msgstr "Servidor requerido para el credencial de VMware." + +#: awx/main/models/credential.py:285 +msgid "Host required for OpenStack credential." +msgstr "Servidor requerido para el credencial de OpenStack." + +#: awx/main/models/credential.py:294 +msgid "Access key required for AWS credential." +msgstr "Clave de acceso requerido para el credencial AWS." + +#: awx/main/models/credential.py:296 +msgid "Username required for Rackspace credential." +msgstr "Usuario necesario para el credencial Rackspace." + +#: awx/main/models/credential.py:299 +msgid "Username required for VMware credential." +msgstr "Usuario necesario para el credencial VMware." + +#: awx/main/models/credential.py:301 +msgid "Username required for OpenStack credential." +msgstr "Usuario necesario para el credencial OpenStack." + +#: awx/main/models/credential.py:307 +msgid "Secret key required for AWS credential." +msgstr "Clave secreta necesaria para el credencial AWS." + +#: awx/main/models/credential.py:309 +msgid "API key required for Rackspace credential." +msgstr "Clave API necesaria para el credencial Rackspace." + +#: awx/main/models/credential.py:311 +msgid "Password required for VMware credential." +msgstr "Contraseña necesaria para el credencial VMware." + +#: awx/main/models/credential.py:313 +msgid "Password or API key required for OpenStack credential." +msgstr "Contraseña o clave API necesaria para el credencial OpenStack." + +#: awx/main/models/credential.py:319 +msgid "Project name required for OpenStack credential." +msgstr "Nombre de proyecto necesario para el credencial OpenStack." + +#: awx/main/models/credential.py:346 +msgid "SSH key unlock must be set when SSH key is encrypted." +msgstr "" +"Desbloquear clave SSH debe ser establecido cuando la clave SSH está cifrada." + +#: awx/main/models/credential.py:352 +msgid "Credential cannot be assigned to both a user and team." +msgstr "EL credencial no puede ser asignado a ambos: un usuario y un equipo." + +#: awx/main/models/fact.py:21 +msgid "Host for the facts that the fact scan captured." +msgstr "Servidor para los facts que el escaneo de facts capture." + +#: awx/main/models/fact.py:26 +msgid "Date and time of the corresponding fact scan gathering time." +msgstr "" +"Fecha y hora que corresponden al escaneo de facts en el tiempo que fueron " +"obtenido." + +#: awx/main/models/fact.py:29 +msgid "" +"Arbitrary JSON structure of module facts captured at timestamp for a single " +"host." +msgstr "" +"Estructura de JSON arbitraria de módulos facts capturados en la fecha y hora " +"para un único servidor." + +#: awx/main/models/inventory.py:45 +msgid "inventories" +msgstr "inventarios" + +#: awx/main/models/inventory.py:52 +msgid "Organization containing this inventory." +msgstr "Organización que contiene este inventario." + +#: awx/main/models/inventory.py:58 +msgid "Inventory variables in JSON or YAML format." +msgstr "Variables de inventario en formato JSON o YAML." + +#: awx/main/models/inventory.py:63 +msgid "Flag indicating whether any hosts in this inventory have failed." +msgstr "" +"Indicador que establece si algún servidor en este inventario ha fallado." + +#: awx/main/models/inventory.py:68 +msgid "Total number of hosts in this inventory." +msgstr "Número total de servidores en este inventario." + +#: awx/main/models/inventory.py:73 +msgid "Number of hosts in this inventory with active failures." +msgstr "Número de servidores en este inventario con fallos actuales." + +#: awx/main/models/inventory.py:78 +msgid "Total number of groups in this inventory." +msgstr "Número total de grupos en este inventario." + +#: awx/main/models/inventory.py:83 +msgid "Number of groups in this inventory with active failures." +msgstr "Número de grupos en este inventario con fallos actuales." + +#: awx/main/models/inventory.py:88 +msgid "" +"Flag indicating whether this inventory has any external inventory sources." +msgstr "" +"Indicador que establece si el inventario tiene alguna fuente de externa de " +"inventario." + +#: awx/main/models/inventory.py:93 +msgid "" +"Total number of external inventory sources configured within this inventory." +msgstr "" +"Número total de inventarios de origen externo configurado dentro de este " +"inventario." + +#: awx/main/models/inventory.py:98 +msgid "Number of external inventory sources in this inventory with failures." +msgstr "" +"Número de inventarios de origen externo en este inventario con errores." + +#: awx/main/models/inventory.py:339 +msgid "Is this host online and available for running jobs?" +msgstr "¿Está este servidor funcionando y disponible para ejecutar trabajos?" + +#: awx/main/models/inventory.py:345 +msgid "" +"The value used by the remote inventory source to uniquely identify the host" +msgstr "" +"El valor usado por el inventario de fuente remota para identificar de forma " +"única el servidor" + +#: awx/main/models/inventory.py:350 +msgid "Host variables in JSON or YAML format." +msgstr "Variables del servidor en formato JSON o YAML." + +#: awx/main/models/inventory.py:372 +msgid "Flag indicating whether the last job failed for this host." +msgstr "" +"Indicador que establece si el último trabajo ha fallado para este servidor." + +#: awx/main/models/inventory.py:377 +msgid "" +"Flag indicating whether this host was created/updated from any external " +"inventory sources." +msgstr "" +"Indicador que establece si este servidor fue creado/actualizado desde algún " +"inventario de fuente externa." + +#: awx/main/models/inventory.py:383 +msgid "Inventory source(s) that created or modified this host." +msgstr "Fuente(s) del inventario que crearon o modificaron este servidor." + +#: awx/main/models/inventory.py:474 +msgid "Group variables in JSON or YAML format." +msgstr "Grupo de variables en formato JSON o YAML." + +#: awx/main/models/inventory.py:480 +msgid "Hosts associated directly with this group." +msgstr "Hosts associated directly with this group." + +#: awx/main/models/inventory.py:485 +msgid "Total number of hosts directly or indirectly in this group." +msgstr "" +"Número total de servidores directamente o indirectamente en este grupo." + +#: awx/main/models/inventory.py:490 +msgid "Flag indicating whether this group has any hosts with active failures." +msgstr "" +"Indicador que establece si este grupo tiene algunos servidores con fallos " +"actuales." + +#: awx/main/models/inventory.py:495 +msgid "Number of hosts in this group with active failures." +msgstr "Número de servidores en este grupo con fallos actuales." + +#: awx/main/models/inventory.py:500 +msgid "Total number of child groups contained within this group." +msgstr "Número total de grupos hijo dentro de este grupo." + +#: awx/main/models/inventory.py:505 +msgid "Number of child groups within this group that have active failures." +msgstr "Número de grupos hijo dentro de este grupo que tienen fallos actuales." + +#: awx/main/models/inventory.py:510 +msgid "" +"Flag indicating whether this group was created/updated from any external " +"inventory sources." +msgstr "" +"Indicador que establece si este grupo fue creado/actualizado desde un " +"inventario de fuente externa." + +#: awx/main/models/inventory.py:516 +msgid "Inventory source(s) that created or modified this group." +msgstr "Fuente(s) de inventario que crearon o modificaron este grupo." + +#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:411 +msgid "Manual" +msgstr "Manual" + +#: awx/main/models/inventory.py:707 +msgid "Local File, Directory or Script" +msgstr "Fichero local, directorio o script" + +#: awx/main/models/inventory.py:708 +msgid "Rackspace Cloud Servers" +msgstr "Servidores cloud en Rackspace" + +#: awx/main/models/inventory.py:709 +msgid "Amazon EC2" +msgstr "Amazon EC2" + +#: awx/main/models/inventory.py:717 +msgid "Custom Script" +msgstr "Script personalizado" + +#: awx/main/models/inventory.py:828 +msgid "Inventory source variables in YAML or JSON format." +msgstr "Variables para la fuente del inventario en formato YAML o JSON." + +#: awx/main/models/inventory.py:847 +msgid "" +"Comma-separated list of filter expressions (EC2 only). Hosts are imported " +"when ANY of the filters match." +msgstr "" +"Lista de expresiones de filtrado separadas por coma (sólo EC2). Servidores " +"son importados cuando ALGÚN filtro coincide." + +#: awx/main/models/inventory.py:853 +msgid "Limit groups automatically created from inventory source (EC2 only)." +msgstr "" +"Limitar grupos creados automáticamente desde la fuente del inventario (sólo " +"EC2)" + +#: awx/main/models/inventory.py:857 +msgid "Overwrite local groups and hosts from remote inventory source." +msgstr "" +"Sobrescribir grupos locales y servidores desde una fuente remota del " +"inventario." + +#: awx/main/models/inventory.py:861 +msgid "Overwrite local variables from remote inventory source." +msgstr "" +"Sobrescribir las variables locales desde una fuente remota del inventario." + +#: awx/main/models/inventory.py:893 +msgid "Availability Zone" +msgstr "Zona de disponibilidad" + +#: awx/main/models/inventory.py:894 +msgid "Image ID" +msgstr "Id de imagen" + +#: awx/main/models/inventory.py:895 +msgid "Instance ID" +msgstr "ID de instancia" + +#: awx/main/models/inventory.py:896 +msgid "Instance Type" +msgstr "Tipo de instancia" + +#: awx/main/models/inventory.py:897 +msgid "Key Name" +msgstr "Nombre clave" + +#: awx/main/models/inventory.py:898 +msgid "Region" +msgstr "Región" + +#: awx/main/models/inventory.py:899 +msgid "Security Group" +msgstr "Grupo de seguridad" + +#: awx/main/models/inventory.py:900 +msgid "Tags" +msgstr "Etiquetas" + +#: awx/main/models/inventory.py:901 +msgid "VPC ID" +msgstr "VPC ID" + +#: awx/main/models/inventory.py:902 +msgid "Tag None" +msgstr "Etiqueta ninguna" + +#: awx/main/models/inventory.py:973 +#, python-format +msgid "" +"Cloud-based inventory sources (such as %s) require credentials for the " +"matching cloud service." +msgstr "" +"Fuentes de inventario basados en Cloud (como %s) requieren credenciales para " +"identificar los correspondientes servicios cloud." + +#: awx/main/models/inventory.py:980 +msgid "Credential is required for a cloud source." +msgstr "Un credencial es necesario para una fuente cloud." + +#: awx/main/models/inventory.py:1005 +#, python-format +msgid "Invalid %(source)s region: %(region)s" +msgstr "Región %(source)s inválida: %(region)s" + +#: awx/main/models/inventory.py:1030 +#, python-format +msgid "Invalid filter expression: %(filter)s" +msgstr "Expresión de filtro inválida: %(filter)s" + +#: awx/main/models/inventory.py:1048 +#, python-format +msgid "Invalid group by choice: %(choice)s" +msgstr "Grupo escogido inválido: %(choice)s" + +#: awx/main/models/inventory.py:1195 +#, python-format +msgid "" +"Unable to configure this item for cloud sync. It is already managed by %s." +msgstr "" +"Imposible configurar este elemento para sincronización cloud. Está " +"administrado actualmente por %s." + +#: awx/main/models/inventory.py:1290 +msgid "Inventory script contents" +msgstr "Contenido del script de inventario" + +#: awx/main/models/inventory.py:1295 +msgid "Organization owning this inventory script" +msgstr "Organización propietario de este script de inventario" + +#: awx/main/models/jobs.py:168 +msgid "You must provide a network credential." +msgstr "Debe indicar un credencial de red." + +#: awx/main/models/jobs.py:176 +msgid "" +"Must provide a credential for a cloud provider, such as Amazon Web Services " +"or Rackspace." +msgstr "" +"Se debe indicar un credencial para el proveedor cloud, como Amazon Web " +"Services o Rackspace." + +#: awx/main/models/jobs.py:268 +msgid "Job Template must provide 'inventory' or allow prompting for it." +msgstr "" +"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." + +#: awx/main/models/jobs.py:272 +msgid "Job Template must provide 'credential' or allow prompting for it." +msgstr "" +"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." + +#: awx/main/models/jobs.py:370 +msgid "Cannot override job_type to or from a scan job." +msgstr "No se puede sustituir job_type a o desde un trabajo de escaneo." + +#: awx/main/models/jobs.py:373 +msgid "Inventory cannot be changed at runtime for scan jobs." +msgstr "" +"El inventario no puede ser cambiado en el tiempo de ejecución para trabajos " +"de escaneo." + +#: awx/main/models/jobs.py:439 awx/main/models/projects.py:243 +msgid "SCM Revision" +msgstr "Revisión SCM" + +#: awx/main/models/jobs.py:440 +msgid "The SCM Revision from the Project used for this job, if available" +msgstr "" +"La revisión SCM desde el proyecto usado para este trabajo, si está disponible" + +#: awx/main/models/jobs.py:448 +msgid "" +"The SCM Refresh task used to make sure the playbooks were available for the " +"job run" +msgstr "" +"La tarea de actualización de SCM utilizado para asegurarse que los playbooks " +"estaban disponibles para la ejecución del trabajo" + +#: awx/main/models/jobs.py:651 +msgid "job host summaries" +msgstr "Resumen de trabajos de servidor" + +#: awx/main/models/jobs.py:754 +msgid "Host Failure" +msgstr "Fallo del servidor" + +#: awx/main/models/jobs.py:757 awx/main/models/jobs.py:771 +msgid "No Hosts Remaining" +msgstr "No más servidores" + +#: awx/main/models/jobs.py:758 +msgid "Host Polling" +msgstr "Sondeo al servidor" + +#: awx/main/models/jobs.py:759 +msgid "Host Async OK" +msgstr "Servidor Async OK" + +#: awx/main/models/jobs.py:760 +msgid "Host Async Failure" +msgstr "Servidor Async fallido" + +#: awx/main/models/jobs.py:761 +msgid "Item OK" +msgstr "Elemento OK" + +#: awx/main/models/jobs.py:762 +msgid "Item Failed" +msgstr "Elemento fallido" + +#: awx/main/models/jobs.py:763 +msgid "Item Skipped" +msgstr "Elemento omitido" + +#: awx/main/models/jobs.py:764 +msgid "Host Retry" +msgstr "Reintentar servidor" + +#: awx/main/models/jobs.py:766 +msgid "File Difference" +msgstr "Diferencias del fichero" + +#: awx/main/models/jobs.py:767 +msgid "Playbook Started" +msgstr "Playbook iniciado" + +#: awx/main/models/jobs.py:768 +msgid "Running Handlers" +msgstr "Handlers ejecutándose" + +#: awx/main/models/jobs.py:769 +msgid "Including File" +msgstr "Incluyendo fichero" + +#: awx/main/models/jobs.py:770 +msgid "No Hosts Matched" +msgstr "Ningún servidor corresponde" + +#: awx/main/models/jobs.py:772 +msgid "Task Started" +msgstr "Tarea iniciada" + +#: awx/main/models/jobs.py:774 +msgid "Variables Prompted" +msgstr "Variables solicitadas" + +#: awx/main/models/jobs.py:775 +msgid "Gathering Facts" +msgstr "Obteniendo facts" + +#: awx/main/models/jobs.py:776 +msgid "internal: on Import for Host" +msgstr "internal: en la importación para el servidor" + +#: awx/main/models/jobs.py:777 +msgid "internal: on Not Import for Host" +msgstr "internal: en la no importación para el servidor" + +#: awx/main/models/jobs.py:778 +msgid "Play Started" +msgstr "Jugada iniciada" + +#: awx/main/models/jobs.py:779 +msgid "Playbook Complete" +msgstr "Playbook terminado" + +#: awx/main/models/jobs.py:1189 +msgid "Remove jobs older than a certain number of days" +msgstr "Eliminar trabajos más antiguos que el ńumero de días especificado" + +#: awx/main/models/jobs.py:1190 +msgid "Remove activity stream entries older than a certain number of days" +msgstr "" +"Eliminar entradas del flujo de actividad más antiguos que el número de días " +"especificado" + +#: awx/main/models/jobs.py:1191 +msgid "Purge and/or reduce the granularity of system tracking data" +msgstr "" +"Limpiar y/o reducir la granularidad de los datos del sistema de rastreo" + +#: awx/main/models/label.py:29 +msgid "Organization this label belongs to." +msgstr "Organización a la que esta etiqueta pertenece." + +#: awx/main/models/notifications.py:31 +msgid "Email" +msgstr "Correo electrónico" + +#: awx/main/models/notifications.py:32 +msgid "Slack" +msgstr "Slack" + +#: awx/main/models/notifications.py:33 +msgid "Twilio" +msgstr "Twilio" + +#: awx/main/models/notifications.py:34 +msgid "Pagerduty" +msgstr "Pagerduty" + +#: awx/main/models/notifications.py:35 +msgid "HipChat" +msgstr "HipChat" + +#: awx/main/models/notifications.py:36 +msgid "Webhook" +msgstr "Webhook" + +#: awx/main/models/notifications.py:37 +msgid "IRC" +msgstr "IRC" + +#: awx/main/models/notifications.py:127 awx/main/models/unified_jobs.py:59 +msgid "Pending" +msgstr "Pendiente" + +#: awx/main/models/notifications.py:128 awx/main/models/unified_jobs.py:62 +msgid "Successful" +msgstr "Correctamente" + +#: awx/main/models/notifications.py:129 awx/main/models/unified_jobs.py:63 +msgid "Failed" +msgstr "Fallido" + +#: awx/main/models/organization.py:157 +msgid "Execute Commands on the Inventory" +msgstr "Ejecutar comandos en el inventario" + +#: awx/main/models/organization.py:211 +msgid "Token not invalidated" +msgstr "Token no invalidado" + +#: awx/main/models/organization.py:212 +msgid "Token is expired" +msgstr "Token está expirado" + +#: awx/main/models/organization.py:213 +msgid "The maximum number of allowed sessions for this user has been exceeded." +msgstr "" +"El número máximo de sesiones permitidas para este usuario ha sido excedido." + +#: awx/main/models/organization.py:216 +msgid "Invalid token" +msgstr "Token inválido" + +#: awx/main/models/organization.py:233 +msgid "Reason the auth token was invalidated." +msgstr "Razón por la que el token fue invalidado." + +#: awx/main/models/organization.py:272 +msgid "Invalid reason specified" +msgstr "Razón especificada inválida" + +#: awx/main/models/projects.py:43 +msgid "Git" +msgstr "Git" + +#: awx/main/models/projects.py:44 +msgid "Mercurial" +msgstr "Mercurial" + +#: awx/main/models/projects.py:45 +msgid "Subversion" +msgstr "Subversion" + +#: awx/main/models/projects.py:71 +msgid "" +"Local path (relative to PROJECTS_ROOT) containing playbooks and related " +"files for this project." +msgstr "" +"Ruta local (relativa a PROJECTS_ROOT) que contiene playbooks y ficheros " +"relacionados para este proyecto." + +#: awx/main/models/projects.py:80 +msgid "SCM Type" +msgstr "Tipo SCM" + +#: awx/main/models/projects.py:81 +msgid "Specifies the source control system used to store the project." +msgstr "" +"Especifica el sistema de control de fuentes utilizado para almacenar el " +"proyecto." + +#: awx/main/models/projects.py:87 +msgid "SCM URL" +msgstr "SCM URL" + +#: awx/main/models/projects.py:88 +msgid "The location where the project is stored." +msgstr "La ubicación donde el proyecto está alojado." + +#: awx/main/models/projects.py:94 +msgid "SCM Branch" +msgstr "Rama SCM" + +#: awx/main/models/projects.py:95 +msgid "Specific branch, tag or commit to checkout." +msgstr "Especificar rama, etiqueta o commit para checkout." + +#: awx/main/models/projects.py:99 +msgid "Discard any local changes before syncing the project." +msgstr "" +"Descartar cualquier cambio local antes de la sincronización del proyecto." + +#: awx/main/models/projects.py:103 +msgid "Delete the project before syncing." +msgstr "Eliminar el proyecto antes de la sincronización." + +#: awx/main/models/projects.py:116 +msgid "The amount of time to run before the task is canceled." +msgstr "La cantidad de tiempo a ejecutar antes de que la tarea sea cancelada." + +#: awx/main/models/projects.py:130 +msgid "Invalid SCM URL." +msgstr "SCM URL inválida." + +#: awx/main/models/projects.py:133 +msgid "SCM URL is required." +msgstr "SCM URL es obligatoria." + +#: awx/main/models/projects.py:142 +msgid "Credential kind must be 'scm'." +msgstr "TIpo de credenciales deben ser 'scm'." + +#: awx/main/models/projects.py:157 +msgid "Invalid credential." +msgstr "Credencial inválida." + +#: awx/main/models/projects.py:229 +msgid "Update the project when a job is launched that uses the project." +msgstr "" +"Actualizar el proyecto mientras un trabajo es ejecutado que usa este " +"proyecto." + +#: awx/main/models/projects.py:234 +msgid "" +"The number of seconds after the last project update ran that a newproject " +"update will be launched as a job dependency." +msgstr "" +"El número de segundos desde de que la última actualización del proyecto se " +"ejecutó para que la nueva actualización del proyecto será ejecutada como un " +"trabajo dependiente." + +#: awx/main/models/projects.py:244 +msgid "The last revision fetched by a project update" +msgstr "La última revisión obtenida por una actualización del proyecto." + +#: awx/main/models/projects.py:251 +msgid "Playbook Files" +msgstr "Ficheros Playbook" + +#: awx/main/models/projects.py:252 +msgid "List of playbooks found in the project" +msgstr "Lista de playbooks encontrados en este proyecto" + +#: awx/main/models/rbac.py:37 +msgid "System Administrator" +msgstr "Administrador del sistema" + +#: awx/main/models/rbac.py:38 +msgid "System Auditor" +msgstr "Auditor del sistema" + +#: awx/main/models/rbac.py:39 +msgid "Ad Hoc" +msgstr "Ad Hoc" + +#: awx/main/models/rbac.py:40 +msgid "Admin" +msgstr "Admin" + +#: awx/main/models/rbac.py:41 +msgid "Auditor" +msgstr "Auditor" + +#: awx/main/models/rbac.py:42 +msgid "Execute" +msgstr "Ejecutar" + +#: awx/main/models/rbac.py:43 +msgid "Member" +msgstr "Miembro" + +#: awx/main/models/rbac.py:44 +msgid "Read" +msgstr "Lectura" + +#: awx/main/models/rbac.py:45 +msgid "Update" +msgstr "Actualización" + +#: awx/main/models/rbac.py:46 +msgid "Use" +msgstr "Uso" + +#: awx/main/models/rbac.py:50 +msgid "Can manage all aspects of the system" +msgstr "Puede gestionar todos los aspectos del sistema" + +#: awx/main/models/rbac.py:51 +msgid "Can view all settings on the system" +msgstr "Puede ver todas los ajustes del sistema" + +#: awx/main/models/rbac.py:52 +msgid "May run ad hoc commands on an inventory" +msgstr "Puede ejecutar comandos ad-hoc en un inventario" + +#: awx/main/models/rbac.py:53 +#, python-format +msgid "Can manage all aspects of the %s" +msgstr "Puede gestionar todos los aspectos del %s" + +#: awx/main/models/rbac.py:54 +#, python-format +msgid "Can view all settings for the %s" +msgstr "Puede ver todas los ajustes para el %s" + +#: awx/main/models/rbac.py:55 +#, python-format +msgid "May run the %s" +msgstr "Puede ejecutar el %s" + +#: awx/main/models/rbac.py:56 +#, python-format +msgid "User is a member of the %s" +msgstr "Usuario es miembro del %s" + +#: awx/main/models/rbac.py:57 +#, python-format +msgid "May view settings for the %s" +msgstr "Podría ver ajustes para el %s" + +#: awx/main/models/rbac.py:58 +msgid "" +"May update project or inventory or group using the configured source update " +"system" +msgstr "" +"Podría actualizar el proyecto o el inventario o el grupo utilizando el " +"sistema de actualización configurado en la fuente." + +#: awx/main/models/rbac.py:59 +#, python-format +msgid "Can use the %s in a job template" +msgstr "Puede usar el %s en una plantilla de trabajo" + +#: awx/main/models/rbac.py:123 +msgid "roles" +msgstr "roles" + +#: awx/main/models/rbac.py:435 +msgid "role_ancestors" +msgstr "role_ancestors" + +#: awx/main/models/schedules.py:69 +msgid "Enables processing of this schedule by Tower." +msgstr "Habilita el procesado de este planificador por Tower" + +#: awx/main/models/schedules.py:75 +msgid "The first occurrence of the schedule occurs on or after this time." +msgstr "" +"La primera ocurrencia del programador sucede en o después de esta fecha." + +#: awx/main/models/schedules.py:81 +msgid "" +"The last occurrence of the schedule occurs before this time, aftewards the " +"schedule expires." +msgstr "" +"La última ocurrencia del planificador sucede antes de esta fecha, justo " +"después de que la planificación expire." + +#: awx/main/models/schedules.py:85 +msgid "A value representing the schedules iCal recurrence rule." +msgstr "Un valor representando la regla de programación recurrente iCal." + +#: awx/main/models/schedules.py:91 +msgid "The next time that the scheduled action will run." +msgstr "La siguiente vez que la acción programa se ejecutará." + +#: awx/main/models/unified_jobs.py:58 +msgid "New" +msgstr "Nuevo" + +#: awx/main/models/unified_jobs.py:60 +msgid "Waiting" +msgstr "Esperando" + +#: awx/main/models/unified_jobs.py:61 +msgid "Running" +msgstr "Ejecutándose" + +#: awx/main/models/unified_jobs.py:65 +msgid "Canceled" +msgstr "Cancelado" + +#: awx/main/models/unified_jobs.py:69 +msgid "Never Updated" +msgstr "Nunca actualizado" + +#: awx/main/models/unified_jobs.py:73 awx/ui/templates/ui/index.html:85 +#: awx/ui/templates/ui/index.html.py:104 +msgid "OK" +msgstr "OK" + +#: awx/main/models/unified_jobs.py:74 +msgid "Missing" +msgstr "No encontrado" + +#: awx/main/models/unified_jobs.py:78 +msgid "No External Source" +msgstr "Sin fuente externa" + +#: awx/main/models/unified_jobs.py:85 +msgid "Updating" +msgstr "Actualizando" + +#: awx/main/models/unified_jobs.py:412 +msgid "Relaunch" +msgstr "Relanzar" + +#: awx/main/models/unified_jobs.py:413 +msgid "Callback" +msgstr "Callback" + +#: awx/main/models/unified_jobs.py:414 +msgid "Scheduled" +msgstr "Programado" + +#: awx/main/models/unified_jobs.py:415 +msgid "Dependency" +msgstr "Dependencia" + +#: awx/main/models/unified_jobs.py:416 +msgid "Workflow" +msgstr "Flujo de trabajo" + +#: awx/main/models/unified_jobs.py:417 +msgid "Sync" +msgstr "Sincronizar" + +#: awx/main/models/unified_jobs.py:463 +msgid "The Tower node the job executed on." +msgstr "El nodo tower donde el trabajo se ejecutó." + +#: awx/main/models/unified_jobs.py:489 +msgid "The date and time the job was queued for starting." +msgstr "La fecha y hora que el trabajo fue puesto en la cola para iniciarse." + +#: awx/main/models/unified_jobs.py:495 +msgid "The date and time the job finished execution." +msgstr "La fecha y hora en la que el trabajo finalizó su ejecución." + +#: awx/main/models/unified_jobs.py:501 +msgid "Elapsed time in seconds that the job ran." +msgstr "Tiempo transcurrido en segundos que el trabajo se ejecutó. " + +#: awx/main/models/unified_jobs.py:523 +msgid "" +"A status field to indicate the state of the job if it wasn't able to run and " +"capture stdout" +msgstr "" +"Un campo de estado que indica el estado del trabajo si éste no fue capaz de " +"ejecutarse y obtener la salida estándar." + +#: awx/main/notifications/base.py:17 +#: awx/main/notifications/email_backend.py:28 +msgid "" +"{} #{} had status {} on Ansible Tower, view details at {}\n" +"\n" +msgstr "" +"{} #{} tuvo estado {} en Ansible Tower, ver detalles en {}\n" +"\n" + +#: awx/main/notifications/hipchat_backend.py:46 +msgid "Error sending messages: {}" +msgstr "Error enviando mensajes: {}" + +#: awx/main/notifications/hipchat_backend.py:48 +msgid "Error sending message to hipchat: {}" +msgstr "Error enviando mensaje a hipchat: {}" + +#: awx/main/notifications/irc_backend.py:54 +msgid "Exception connecting to irc server: {}" +msgstr "Excepción conectando al servidor de ir: {}" + +#: awx/main/notifications/pagerduty_backend.py:39 +msgid "Exception connecting to PagerDuty: {}" +msgstr "Excepción conectando a PagerDuty: {}" + +#: awx/main/notifications/pagerduty_backend.py:48 +#: awx/main/notifications/slack_backend.py:52 +#: awx/main/notifications/twilio_backend.py:46 +msgid "Exception sending messages: {}" +msgstr "Excepción enviando mensajes: {}" + +#: awx/main/notifications/twilio_backend.py:36 +msgid "Exception connecting to Twilio: {}" +msgstr "Excepción conectando a Twilio: {}" + +#: awx/main/notifications/webhook_backend.py:38 +#: awx/main/notifications/webhook_backend.py:40 +msgid "Error sending notification webhook: {}" +msgstr "Error enviando notificación weebhook: {}" + +#: awx/main/scheduler/__init__.py:127 +msgid "" +"Job spawned from workflow could not start because it was not in the right " +"state or required manual credentials" +msgstr "" +"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no " +"tenía el estado correcto o credenciales manuales eran solicitados." + +#: awx/main/scheduler/__init__.py:131 +msgid "" +"Job spawned from workflow could not start because it was missing a related " +"resource such as project or inventory" +msgstr "" +"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no se " +"encontraron los recursos relacionados como un proyecto o un inventario." + +#: awx/main/tasks.py:180 +msgid "Ansible Tower host usage over 90%" +msgstr "Ansible Tower uso de servidores por encima de 90%" + +#: awx/main/tasks.py:185 +msgid "Ansible Tower license will expire soon" +msgstr "Licencia de Ansible Tower expirará pronto" + +#: awx/main/tasks.py:249 +msgid "status_str must be either succeeded or failed" +msgstr "status_str debe ser 'succeeded' o 'failed'" + +#: awx/main/utils/common.py:89 +#, python-format +msgid "Unable to convert \"%s\" to boolean" +msgstr "Imposible convertir \"%s\" a booleano" + +#: awx/main/utils/common.py:245 +#, python-format +msgid "Unsupported SCM type \"%s\"" +msgstr "Tipo de SCM no soportado \"%s\"" + +#: awx/main/utils/common.py:252 awx/main/utils/common.py:264 +#: awx/main/utils/common.py:283 +#, python-format +msgid "Invalid %s URL" +msgstr "URL %s inválida" + +#: awx/main/utils/common.py:254 awx/main/utils/common.py:292 +#, python-format +msgid "Unsupported %s URL" +msgstr "URL %s no soportada" + +#: awx/main/utils/common.py:294 +#, python-format +msgid "Unsupported host \"%s\" for file:// URL" +msgstr "Servidor \"%s\" no soportado para URL file://" + +#: awx/main/utils/common.py:296 +#, python-format +msgid "Host is required for %s URL" +msgstr "Servidor es obligatorio para URL %s" + +#: awx/main/utils/common.py:314 +#, python-format +msgid "Username must be \"git\" for SSH access to %s." +msgstr "Usuario debe ser \"git\" para acceso SSH a %s." + +#: awx/main/utils/common.py:320 +#, python-format +msgid "Username must be \"hg\" for SSH access to %s." +msgstr "Usuario debe ser \"hg\" para acceso SSH a %s." + +#: awx/main/validators.py:60 +#, python-format +msgid "Invalid certificate or key: %r..." +msgstr "Certificado inválido o clave: %r..." + +#: awx/main/validators.py:74 +#, python-format +msgid "Invalid private key: unsupported type \"%s\"" +msgstr "Clave privada inválida: tipo no soportado \"%s\"" + +#: awx/main/validators.py:78 +#, python-format +msgid "Unsupported PEM object type: \"%s\"" +msgstr "TIpo de objeto PEM no soportado: \"%s\"" + +#: awx/main/validators.py:103 +msgid "Invalid base64-encoded data" +msgstr "Datos codificados en base64 inválidos" + +#: awx/main/validators.py:122 +msgid "Exactly one private key is required." +msgstr "Exactamente una clave privada es necesaria." + +#: awx/main/validators.py:124 +msgid "At least one private key is required." +msgstr "Al menos una clave privada es necesaria." + +#: awx/main/validators.py:126 +#, python-format +msgid "" +"At least %(min_keys)d private keys are required, only %(key_count)d provided." +msgstr "" +"Al menos %(min_keys)d claves privadas son necesarias, sólo %(key_count)d han " +"sido proporcionadas." + +#: awx/main/validators.py:129 +#, python-format +msgid "Only one private key is allowed, %(key_count)d provided." +msgstr "" +"Sólo una clave privada está permitida, %(key_count)d han sido " +"proporcionadas." + +#: awx/main/validators.py:131 +#, python-format +msgid "" +"No more than %(max_keys)d private keys are allowed, %(key_count)d provided." +msgstr "" +"No más de %(max_keys)d claves privadas son permitidas, %(key_count)d han " +"sido proporcionadas." + +#: awx/main/validators.py:136 +msgid "Exactly one certificate is required." +msgstr "Exactamente un certificado es necesario." + +#: awx/main/validators.py:138 +msgid "At least one certificate is required." +msgstr "Al menos un certificado es necesario." + +#: awx/main/validators.py:140 +#, python-format +msgid "" +"At least %(min_certs)d certificates are required, only %(cert_count)d " +"provided." +msgstr "" +"Al menos %(min_certs)d certificados son necesarios, sólo %(cert_count)d han " +"sido proporcionados." + +#: awx/main/validators.py:143 +#, python-format +msgid "Only one certificate is allowed, %(cert_count)d provided." +msgstr "" +"Sólo un certificado está permitido, %(cert_count)d han sido proporcionados." + +#: awx/main/validators.py:145 +#, python-format +msgid "" +"No more than %(max_certs)d certificates are allowed, %(cert_count)d provided." +msgstr "" +"No más de %(max_certs)d certificados están permitidos, %(cert_count)d han " +"sido proporcionados." + +#: awx/main/views.py:20 +msgid "API Error" +msgstr "API Error" + +#: awx/main/views.py:49 +msgid "Bad Request" +msgstr "Solicitud incorrecta" + +#: awx/main/views.py:50 +msgid "The request could not be understood by the server." +msgstr "La petición no puede ser entendida por el servidor." + +#: awx/main/views.py:57 +msgid "Forbidden" +msgstr "Prohibido" + +#: awx/main/views.py:58 +msgid "You don't have permission to access the requested resource." +msgstr "Usted no tiene permisos para acceder al recurso solicitado." + +#: awx/main/views.py:65 +msgid "Not Found" +msgstr "No encontrado" + +#: awx/main/views.py:66 +msgid "The requested resource could not be found." +msgstr "El recurso solicitado no pudo ser encontrado." + +#: awx/main/views.py:73 +msgid "Server Error" +msgstr "Error de servidor" + +#: awx/main/views.py:74 +msgid "A server error has occurred." +msgstr "Un error en el servidor ha ocurrido." + +#: awx/settings/defaults.py:625 +msgid "Chicago" +msgstr "Chicago" + +#: awx/settings/defaults.py:626 +msgid "Dallas/Ft. Worth" +msgstr "Dallas/Ft. Worth" + +#: awx/settings/defaults.py:627 +msgid "Northern Virginia" +msgstr "Northern Virginia" + +#: awx/settings/defaults.py:628 +msgid "London" +msgstr "London" + +#: awx/settings/defaults.py:629 +msgid "Sydney" +msgstr "Sydney" + +#: awx/settings/defaults.py:630 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: awx/settings/defaults.py:657 +msgid "US East (Northern Virginia)" +msgstr "Este de EE.UU. (Virginia del norte)" + +#: awx/settings/defaults.py:658 +msgid "US East (Ohio)" +msgstr "Este de EE.UU. (Ohio)" + +#: awx/settings/defaults.py:659 +msgid "US West (Oregon)" +msgstr "Oeste de EE.UU. (Oregón)" + +#: awx/settings/defaults.py:660 +msgid "US West (Northern California)" +msgstr "Oeste de EE.UU (California del norte)" + +#: awx/settings/defaults.py:661 +msgid "Canada (Central)" +msgstr "Canada (Central)" + +#: awx/settings/defaults.py:662 +msgid "EU (Frankfurt)" +msgstr "UE (Fráncfort)" + +#: awx/settings/defaults.py:663 +msgid "EU (Ireland)" +msgstr "UE (Irlanda)" + +#: awx/settings/defaults.py:664 +msgid "EU (London)" +msgstr "UE (Londres)" + +#: awx/settings/defaults.py:665 +msgid "Asia Pacific (Singapore)" +msgstr "Asia Pacífico (Singapur)" + +#: awx/settings/defaults.py:666 +msgid "Asia Pacific (Sydney)" +msgstr "Asia Pacífico (Sídney)" + +#: awx/settings/defaults.py:667 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia Pacífico (Tokio)" + +#: awx/settings/defaults.py:668 +msgid "Asia Pacific (Seoul)" +msgstr "Asia Pacífico (Seúl)" + +#: awx/settings/defaults.py:669 +msgid "Asia Pacific (Mumbai)" +msgstr "Asia Pacífico (Bombay)" + +#: awx/settings/defaults.py:670 +msgid "South America (Sao Paulo)" +msgstr "América del sur (São Paulo)" + +#: awx/settings/defaults.py:671 +msgid "US West (GovCloud)" +msgstr "Oeste de EE.UU. (GovCloud)" + +#: awx/settings/defaults.py:672 +msgid "China (Beijing)" +msgstr "China (Pekín)" + +#: awx/settings/defaults.py:721 +msgid "US East (B)" +msgstr "Este de EE.UU. (B)" + +#: awx/settings/defaults.py:722 +msgid "US East (C)" +msgstr "Este de EE.UU. (C)" + +#: awx/settings/defaults.py:723 +msgid "US East (D)" +msgstr "Este de EE.UU. (D)" + +#: awx/settings/defaults.py:724 +msgid "US Central (A)" +msgstr "EE.UU. Central (A)" + +#: awx/settings/defaults.py:725 +msgid "US Central (B)" +msgstr "EE.UU. Central (B)" + +#: awx/settings/defaults.py:726 +msgid "US Central (C)" +msgstr "EE.UU. Central (C)" + +#: awx/settings/defaults.py:727 +msgid "US Central (F)" +msgstr "EE.UU. Central (F)" + +#: awx/settings/defaults.py:728 +msgid "Europe West (B)" +msgstr "Oeste de Europa (B)" + +#: awx/settings/defaults.py:729 +msgid "Europe West (C)" +msgstr "Oeste de Europa (C)" + +#: awx/settings/defaults.py:730 +msgid "Europe West (D)" +msgstr "Oeste de Europa (D)" + +#: awx/settings/defaults.py:731 +msgid "Asia East (A)" +msgstr "Este de Asia (A)" + +#: awx/settings/defaults.py:732 +msgid "Asia East (B)" +msgstr "Este de Asia (B)" + +#: awx/settings/defaults.py:733 +msgid "Asia East (C)" +msgstr "Este de Asia (C)" + +#: awx/settings/defaults.py:757 +msgid "US Central" +msgstr "EE.UU. Central" + +#: awx/settings/defaults.py:758 +msgid "US East" +msgstr "Este de EE.UU." + +#: awx/settings/defaults.py:759 +msgid "US East 2" +msgstr "Este de EE.UU. 2" + +#: awx/settings/defaults.py:760 +msgid "US North Central" +msgstr "Norte-centro de EE.UU." + +#: awx/settings/defaults.py:761 +msgid "US South Central" +msgstr "Sur-Centro de EE.UU." + +#: awx/settings/defaults.py:762 +msgid "US West" +msgstr "Oeste de EE.UU." + +#: awx/settings/defaults.py:763 +msgid "Europe North" +msgstr "Norte de Europa" + +#: awx/settings/defaults.py:764 +msgid "Europe West" +msgstr "Oeste de Europa" + +#: awx/settings/defaults.py:765 +msgid "Asia Pacific East" +msgstr "Este de Asia Pacífico" + +#: awx/settings/defaults.py:766 +msgid "Asia Pacific Southeast" +msgstr "Sudeste de Asia Pacífico" + +#: awx/settings/defaults.py:767 +msgid "Japan East" +msgstr "Este de Japón" + +#: awx/settings/defaults.py:768 +msgid "Japan West" +msgstr "Oeste de Japón" + +#: awx/settings/defaults.py:769 +msgid "Brazil South" +msgstr "Sur de Brasil" + +#: awx/sso/apps.py:9 +msgid "Single Sign-On" +msgstr "Inicio de sesión único (SSO)" + +#: awx/sso/conf.py:27 +msgid "" +"Mapping to organization admins/users from social auth accounts. This " +"setting\n" +"controls which users are placed into which Tower organizations based on\n" +"their username and email address. Dictionary keys are organization names.\n" +"organizations will be created if not present if the license allows for\n" +"multiple organizations, otherwise the single default organization is used\n" +"regardless of the key. Values are dictionaries defining the options for\n" +"each organization's membership. For each organization it is possible to\n" +"specify which users are automatically users of the organization and also\n" +"which users can administer the organization. \n" +"\n" +"- admins: None, True/False, string or list of strings.\n" +" If None, organization admins will not be updated.\n" +" If True, all users using social auth will automatically be added as " +"admins\n" +" of the organization.\n" +" If False, no social auth users will be automatically added as admins of\n" +" the organization.\n" +" If a string or list of strings, specifies the usernames and emails for\n" +" users who will be added to the organization. Strings in the format\n" +" \"//\" will be interpreted as JavaScript regular " +"expressions and\n" +" may also be used instead of string literals; only \"i\" and \"m\" are " +"supported\n" +" for flags.\n" +"- remove_admins: True/False. Defaults to True.\n" +" If True, a user who does not match will be removed from the " +"organization's\n" +" administrative list.\n" +"- users: None, True/False, string or list of strings. Same rules apply as " +"for\n" +" admins.\n" +"- remove_users: True/False. Defaults to True. Same rules as apply for \n" +" remove_admins." +msgstr "" +"Relación de usuarios/administradores de organización desde sus cuentas de " +"autentificación social. \n" +"Esta configuración controla qué usuarios están establecidos dentro de qué " +"organización Tower basándose\n" +"en sus nombre de usuario y dirección de correo. Claves son nombres de " +"organizaciones,serán creados si no existen si la licencia actual permite " +"varias organizaciones.\n" +"Valores son diccionarios que definen opciones para cada miembro de la " +"organización.\n" +" Para cada organización es posible especificar qué usuarios son " +"automáticamente usuarios\n" +"de la organización y también qué usuarios pueden administrar la " +"organización:\n" +"\n" +"- admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" +" Si None, administradores de organización no serán actualizados.\n" +" Si True, todos los usuarios usando identificación social serán " +"automáticamente\n" +" añadidos como administradores de la organización.\n" +" Si False, ningún usuario con identificación social será automáticamente " +"añadido\n" +" como administrador de la organización\n" +" Si una cadena o lista de cadenas, especifica el nombre de usuario y " +"direcciones de correo\n" +" para los usuarios que serán añadidos a la organización. Cadenas en " +"formato\n" +" \"//\" serán interpretados como expresiones regulares de " +"Javascript y\n" +" podría ser utilizadas en vez de cadenas de texto literales; sólo \"i\" y " +"\"m\" están\n" +" soportadas como modificadores.\n" +"- remove_admins: True/False. Por defecto a True.\n" +" Si True, un usuario que no corresponda será eliminado de la lista de " +"administradores\n" +" de la organización.\n" +"- users: None, True/False, cadena de texto o lista de cadenas de texto. Se " +"aplica\n" +" la misma regla que para admins.\n" +"- remove_users: True/False. Por defecto a True. Se aplican las mismas reglas " +"que\n" +" para remove_admins." + +#: awx/sso/conf.py:76 +msgid "" +"Mapping of team members (users) from social auth accounts. Keys are team\n" +"names (will be created if not present). Values are dictionaries of options\n" +"for each team's membership, where each can contain the following " +"parameters:\n" +"\n" +"- organization: string. The name of the organization to which the team\n" +" belongs. The team will be created if the combination of organization and\n" +" team name does not exist. The organization will first be created if it\n" +" does not exist. If the license does not allow for multiple " +"organizations,\n" +" the team will always be assigned to the single default organization.\n" +"- users: None, True/False, string or list of strings.\n" +" If None, team members will not be updated.\n" +" If True/False, all social auth users will be added/removed as team\n" +" members.\n" +" If a string or list of strings, specifies expressions used to match " +"users.\n" +" User will be added as a team member if the username or email matches.\n" +" Strings in the format \"//\" will be interpreted as " +"JavaScript\n" +" regular expressions and may also be used instead of string literals; only " +"\"i\"\n" +" and \"m\" are supported for flags.\n" +"- remove: True/False. Defaults to True. If True, a user who does not match\n" +" the rules above will be removed from the team." +msgstr "" +"Relación de miembros de equipo (usuarios) desde sus cuentas de " +"autentificación social. \n" +"Claves son nombres de equipo (serán creados si no existen). Valores son " +"diccionario de opciones\n" +"para cada miembro del equipo, donde cada uno de ellos pueden contener los " +"siguientes parámetros:\n" +"\n" +"- organization: cadena de texto. El nombre de la organización a la cual el " +"equipo\n" +" pertenece. El equipo será creado si la combinación de nombre de " +"organización y \n" +" equipo no existe. La organización será primero creada si\n" +" no existe. Si la licencia no permite múltiples organizaciones,\n" +" el equipo será siempre asignado a una única organización por defecto.\n" +"- users: None, True/False, cadena de texto or lista de cadenas de texto.\n" +" Si None, miembros del equipo no serán actualizados.\n" +" Si True/False, todos los usuarios autentificados socialmente serán\n" +" añadidos/eliminados como miembros del equipo.\n" +" Si una cadena de texto o lista de cadenas de texto, especifica expresiones " +"a usar\n" +" para encontrar usuarios. Usuario será añadido como miembro del equipo si " +"el nombre de usuario o la dirección de correo electrónica coincide.\n" +" Cadenas de texto en formato \"//\" son interpretadas " +"como\n" +" expresiones regulares JavaScript y podrían ser usadas en vez de cadenas " +"de texto literales:\n" +" sólo \"i\" y \"m\" están soportadas como modificadores (flags).\n" +"- remove: True/False. Por defecto a True. Si True, un usuario que no " +"corresponda\n" +" con las reglas indicadas anteriormente será eliminado del equipo." + +#: awx/sso/conf.py:119 +msgid "Authentication Backends" +msgstr "Backends para autentificación" + +#: awx/sso/conf.py:120 +msgid "" +"List of authentication backends that are enabled based on license features " +"and other authentication settings." +msgstr "" +"Listado de backends de autentificación que están habilitados basados en " +"funcionalidades de la licencia y otros ajustes de autentificación." + +#: awx/sso/conf.py:133 +msgid "Social Auth Organization Map" +msgstr "Autentificación social - Mapa de organización" + +#: awx/sso/conf.py:145 +msgid "Social Auth Team Map" +msgstr "Autentificación social - Mapa de equipos" + +#: awx/sso/conf.py:157 +msgid "Social Auth User Fields" +msgstr "Autentificación social - Campos usuario" + +#: awx/sso/conf.py:158 +msgid "" +"When set to an empty list `[]`, this setting prevents new user accounts from " +"being created. Only users who have previously logged in using social auth or " +"have a user account with a matching email address will be able to login." +msgstr "" +"Cuando se establece una lista vacía `[]`, esta configuración previene que " +"nuevos usuarios puedan ser creados. Sólo usuarios que previamente han " +"iniciado sesión usando autentificación social o tengan una cuenta de usuario " +"que corresponda con la dirección de correcto podrán iniciar sesión." + +#: awx/sso/conf.py:176 +msgid "LDAP Server URI" +msgstr "URI servidor LDAP" + +#: awx/sso/conf.py:177 +msgid "" +"URI to connect to LDAP server, such as \"ldap://ldap.example.com:389\" (non-" +"SSL) or \"ldaps://ldap.example.com:636\" (SSL). Multiple LDAP servers may be " +"specified by separating with spaces or commas. LDAP authentication is " +"disabled if this parameter is empty." +msgstr "" +"URI para conectar a un servidor LDAP. Por ejemplo \"ldap://ldap.ejemplo." +"com:389\" (no SSL) or \"ldaps://ldap.ejemplo.com:636\" (SSL). Varios " +"servidores LDAP pueden ser especificados separados por espacios o comandos. " +"La autentificación LDAP está deshabilitado si este parámetro está vacío." + +#: awx/sso/conf.py:181 awx/sso/conf.py:199 awx/sso/conf.py:211 +#: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:259 +#: awx/sso/conf.py:281 awx/sso/conf.py:297 awx/sso/conf.py:316 +#: awx/sso/conf.py:333 awx/sso/conf.py:350 awx/sso/conf.py:366 +#: awx/sso/conf.py:383 awx/sso/conf.py:421 awx/sso/conf.py:462 +msgid "LDAP" +msgstr "LDAP" + +#: awx/sso/conf.py:193 +msgid "LDAP Bind DN" +msgstr "DN para enlazar con LDAP" + +#: awx/sso/conf.py:194 +msgid "" +"DN (Distinguished Name) of user to bind for all search queries. Normally in " +"the format \"CN=Some User,OU=Users,DC=example,DC=com\" but may also be " +"specified as \"DOMAIN\\username\" for Active Directory. This is the system " +"user account we will use to login to query LDAP for other user information." +msgstr "" +"DN (Distinguished Name) del usuario a enlazar para todas las consultas de " +"búsqueda. Normalmente en formato \"CN=Algun usuario,OU=Usuarios,DC=ejemplo," +"DC=com\" pero podría ser también especificado como \"DOMINIO\\usuario\" para " +"Active Directory. Ésta es la cuenta de usuario que será utilizada para " +"iniciar sesión para consultar LDAP para la información de otro usuario." + +#: awx/sso/conf.py:209 +msgid "LDAP Bind Password" +msgstr "Contraseña para enlazar con LDAP" + +#: awx/sso/conf.py:210 +msgid "Password used to bind LDAP user account." +msgstr "Contraseña usada para enlazar a LDAP con la cuenta de usuario." + +#: awx/sso/conf.py:221 +msgid "LDAP Start TLS" +msgstr "LDAP - Iniciar TLS" + +#: awx/sso/conf.py:222 +msgid "Whether to enable TLS when the LDAP connection is not using SSL." +msgstr "Para activar o no TLS cuando la conexión LDAP no utilice SSL" + +#: awx/sso/conf.py:232 +msgid "LDAP Connection Options" +msgstr "Opciones de conexión a LDAP" + +#: awx/sso/conf.py:233 +msgid "" +"Additional options to set for the LDAP connection. LDAP referrals are " +"disabled by default (to prevent certain LDAP queries from hanging with AD). " +"Option names should be strings (e.g. \"OPT_REFERRALS\"). Refer to https://" +"www.python-ldap.org/doc/html/ldap.html#options for possible options and " +"values that can be set." +msgstr "" +"Opciones adicionales a establecer para la conexión LDAP. Referenciadores " +"LDAP están deshabilitados por defecto (para prevenir que ciertas consultas " +"LDAP se bloqueen con AD). Los nombres de las opciones deben ser cadenas de " +"texto (p.e. \"OPT_REFERRALS\"). Acuda a https://www.python-ldap.org/doc/html/" +"ldap.html#options para posibles opciones y valores que pueden ser " +"establecidos." + +#: awx/sso/conf.py:252 +msgid "LDAP User Search" +msgstr "Búsqueda de usuarios LDAP" + +#: awx/sso/conf.py:253 +msgid "" +"LDAP search query to find users. Any user that matches the given pattern " +"will be able to login to Tower. The user should also be mapped into an " +"Tower organization (as defined in the AUTH_LDAP_ORGANIZATION_MAP setting). " +"If multiple search queries need to be supported use of \"LDAPUnion\" is " +"possible. See python-ldap documentation as linked at the top of this section." +msgstr "" +"Consulta de búsqueda LDAP para la búsqueda de usuarios. Cualquier usuario " +"que coincida con el patrón dado será capaz de iniciar sesión en Tower. El " +"usuario debe ser también ligada dentro de una organización Tower (definida " +"en la opción AUTH_LDAP_ORGANIZATION_MAP). Si varias consultas de búsqueda " +"necesitan ser soportadas el uso de \"LDAPUnion\" es posible. Acuda a la " +"documentación de python-ldap enlazada dentro de la parte superior de esta " +"sección." + +#: awx/sso/conf.py:275 +msgid "LDAP User DN Template" +msgstr "Plantilla de DN para el usuario LDAP" + +#: awx/sso/conf.py:276 +msgid "" +"Alternative to user search, if user DNs are all of the same format. This " +"approach will be more efficient for user lookups than searching if it is " +"usable in your organizational environment. If this setting has a value it " +"will be used instead of AUTH_LDAP_USER_SEARCH." +msgstr "" +"Búsqueda alternativa de usuarios, si DNs de usuario están en el mismo " +"formato. Esta manera será más eficiente para encontrar usuarios que " +"buscándolos si es utilizable en su entorno organizacional. Si esta " +"configuración tiene un valor será usado en vez de AUTH_LDAP_USER_SEARCH." + +#: awx/sso/conf.py:291 +msgid "LDAP User Attribute Map" +msgstr "Mapa de atributos de usuario LDAP" + +#: awx/sso/conf.py:292 +msgid "" +"Mapping of LDAP user schema to Tower API user attributes (key is user " +"attribute name, value is LDAP attribute name). The default setting is valid " +"for ActiveDirectory but users with other LDAP configurations may need to " +"change the values (not the keys) of the dictionary/hash-table." +msgstr "" +"Relación del esquema de usuarios LDAP a Atributos de usuario Tower API " +"(clave es el nombre del atributo del usuario, valor es el nombre del " +"atributo LDAP). La configuración por defecto es válida para ActiveDirectory " +"pero usuarios con otra configuración LDAP podrían necesitar cambiar los " +"valores (no las claves del diccionario/tabla-relaciones." + +#: awx/sso/conf.py:311 +msgid "LDAP Group Search" +msgstr "Búsqueda de grupos LDAP" + +#: awx/sso/conf.py:312 +msgid "" +"Users in Tower are mapped to organizations based on their membership in LDAP " +"groups. This setting defines the LDAP search query to find groups. Note that " +"this, unlike the user search above, does not support LDAPSearchUnion." +msgstr "" +"Usuarios en Tower son enlazados a la organización basado en su pertenencia a " +"grupos LDAP. Esta configuración define la consulta de búsqueda LDAP para " +"encontrar grupos. Tenga en cuenta que esto, contrariamente que la búsqueda " +"superior, no soporta LDAPSearchUnion." + +#: awx/sso/conf.py:329 +msgid "LDAP Group Type" +msgstr "Tipo de grupo LDAP" + +#: awx/sso/conf.py:330 +msgid "" +"The group type may need to be changed based on the type of the LDAP server. " +"Values are listed at: http://pythonhosted.org/django-auth-ldap/groups." +"html#types-of-groups" +msgstr "" +"El tipo de grupo es necesario ser cambiado basado en el tipo del servidor de " +"LDAP. Valores posibles listados en: http://pythonhosted.org/django-auth-" +"ldap/groups.html#types-of-groups" + +#: awx/sso/conf.py:345 +msgid "LDAP Require Group" +msgstr "Grupo LDAP requerido" + +#: awx/sso/conf.py:346 +msgid "" +"Group DN required to login. If specified, user must be a member of this " +"group to login via LDAP. If not set, everyone in LDAP that matches the user " +"search will be able to login via Tower. Only one require group is supported." +msgstr "" +"Grupo DN necesario para iniciar sesión. Si se especifica, el usuario debe " +"ser miembro de este grupo para iniciar sesión usando LDAP. SI no se " +"establece, cualquiera en LDAP que corresponda con la búsqueda de usuario " +"será capaz de iniciar sesión en Tower. No es posible especificar varios " +"grupos." + +#: awx/sso/conf.py:362 +msgid "LDAP Deny Group" +msgstr "Grupo LDAP no permitido" + +#: awx/sso/conf.py:363 +msgid "" +"Group DN denied from login. If specified, user will not be allowed to login " +"if a member of this group. Only one deny group is supported." +msgstr "" +"Grupo DN no permitido para iniciar sesión. SI se especifica, el usuario no " +"podrá iniciar sesión si es miembro de este grupo. Sólo un grupo no permitido " +"está soportado." + +#: awx/sso/conf.py:376 +msgid "LDAP User Flags By Group" +msgstr "Indicadores de usuario LDAP por grupo" + +#: awx/sso/conf.py:377 +msgid "" +"User profile flags updated from group membership (key is user attribute " +"name, value is group DN). These are boolean fields that are matched based " +"on whether the user is a member of the given group. So far only " +"is_superuser is settable via this method. This flag is set both true and " +"false at login time based on current LDAP settings." +msgstr "" +"Indicadores del perfil de usuario actualizado desde la pertenencia del grupo " +"(clave es el nombre de atributo del usuario, valor es el grupo DN). Éstos " +"son campos booleanos en los que se basa si el usuario es miembro del grupo " +"especificado. Hasta ahora sólo is_superuser es configurable utilizando este " +"método. El indicador establece a verdadero o falso en el momento de inicio " +"de sesión basándose en la actual configuración LDAP." + +#: awx/sso/conf.py:395 +msgid "LDAP Organization Map" +msgstr "Mapa de organización LDAP" + +#: awx/sso/conf.py:396 +msgid "" +"Mapping between organization admins/users and LDAP groups. This controls " +"what users are placed into what Tower organizations relative to their LDAP " +"group memberships. Keys are organization names. Organizations will be " +"created if not present. Values are dictionaries defining the options for " +"each organization's membership. For each organization it is possible to " +"specify what groups are automatically users of the organization and also " +"what groups can administer the organization.\n" +"\n" +" - admins: None, True/False, string or list of strings.\n" +" If None, organization admins will not be updated based on LDAP values.\n" +" If True, all users in LDAP will automatically be added as admins of the " +"organization.\n" +" If False, no LDAP users will be automatically added as admins of the " +"organization.\n" +" If a string or list of strings, specifies the group DN(s) that will be " +"added of the organization if they match any of the specified groups.\n" +" - remove_admins: True/False. Defaults to True.\n" +" If True, a user who is not an member of the given groups will be removed " +"from the organization's administrative list.\n" +" - users: None, True/False, string or list of strings. Same rules apply as " +"for admins.\n" +" - remove_users: True/False. Defaults to True. Same rules apply as for " +"remove_admins." +msgstr "" +"Relación entre administradores/usuarios de la organización y grupos LDAP. " +"Esto controla qué usuarios son establecidos dentro de qué organización Tower " +"dependiendo de sus pertenencias a grupos LDAP. Clave son nombres de " +"organización. Organizaciones serán creados si no existen. Valores son " +"diccionarios definiendo las opciones para cada miembro de la organización. " +"Para cada organización es posible especificar qué grupos son automáticamente " +"usuarios de la organización y también qué grupos pueden administrar la " +"organización.\n" +"\n" +" - admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" +" Si None, administradores de organización no podrán ser actualizados " +"basándose con los valores LDAP.\n" +" Si True, todos los usuarios en LDAP serán automáticamente añadidos como " +"administradores de la organización.\n" +" Si False, ningún usuario LDAP será automáticamente añadido como " +"administrador de la organización.\n" +" Si una cadena o lista de cadenas de texto, especifica el grupo DN(s) que " +"serán añadidos de la organización si ellos corresponden a alguno de los " +"grupos especificados.\n" +" - remove_admins: True/False. Por defecto a True.\n" +" Si True, un usuario que no es miembro de los grupos especificados será " +"eliminado de la lista administrativa de la organización.\n" +" - users: None, True/False, string o lista de cadena de texto. Se aplican " +"las mismas reglas que para adminss.\n" +" - remove_users: True/False. Por defecto a True. Se aplica las mismas reglas " +"que para remove_admins." + +#: awx/sso/conf.py:444 +msgid "LDAP Team Map" +msgstr "Mapa de equipos LDAP" + +#: awx/sso/conf.py:445 +msgid "" +"Mapping between team members (users) and LDAP groups. Keys are team names " +"(will be created if not present). Values are dictionaries of options for " +"each team's membership, where each can contain the following parameters:\n" +"\n" +" - organization: string. The name of the organization to which the team " +"belongs. The team will be created if the combination of organization and " +"team name does not exist. The organization will first be created if it does " +"not exist.\n" +" - users: None, True/False, string or list of strings.\n" +" If None, team members will not be updated.\n" +" If True/False, all LDAP users will be added/removed as team members.\n" +" If a string or list of strings, specifies the group DN(s). User will be " +"added as a team member if the user is a member of ANY of these groups.\n" +"- remove: True/False. Defaults to True. If True, a user who is not a member " +"of the given groups will be removed from the team." +msgstr "" +"Relación entre miembros del equipo (usuarios) y grupos LDAP. Claves son " +"nombres de equipo (serán creados si no existen). Valores son diccionarios de " +"opciones para cada miembro del equipo, donde cada uno puede contener alguno " +"de los siguientes parámetros:\n" +"\n" +" - organization: cadena de texto. El nombre de la organización a la cual el " +"equipo pertenece. El equipo será creado si la combinación de organización y " +"equipo no existen. La organización será creada primera si no existe.\n" +" - users: None, True/False, cadena o lista de cadenas.\n" +" Si None, miembros del equipo no serán actualizados.\n" +" Si True/False, todos los usuarios LDAP serán añadidos/eliminados como " +"miembros del equipo.\n" +" Si una cadena de texto o lista de cadenas de texto, especifica el grupo " +"(DN)s. Usuario será añadido como miembro del equipo si el usuario es miembro " +"de ALGUNO de esos grupos.\n" +"- remove: True/False. Por defecto True. Si True, un usuario que no es " +"miembro del grupo proporcionado será eliminado del equipo." + +#: awx/sso/conf.py:488 +msgid "RADIUS Server" +msgstr "Servidor RADIUS" + +#: awx/sso/conf.py:489 +msgid "" +"Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " +"setting is empty." +msgstr "" +"Hostname/IP del servidor RADIUS. La autentificación RADIUS se deshabilitará " +"si esta configuración está vacía." + +#: awx/sso/conf.py:491 awx/sso/conf.py:505 awx/sso/conf.py:517 +msgid "RADIUS" +msgstr "RADIUS" + +#: awx/sso/conf.py:503 +msgid "RADIUS Port" +msgstr "Puerto RADIUS" + +#: awx/sso/conf.py:504 +msgid "Port of RADIUS server." +msgstr "Puerto del servidor RADIUS" + +#: awx/sso/conf.py:515 +msgid "RADIUS Secret" +msgstr "Clave secreta RADIUS" + +#: awx/sso/conf.py:516 +msgid "Shared secret for authenticating to RADIUS server." +msgstr "Clave secreta compartida para autentificación a RADIUS." + +#: awx/sso/conf.py:532 +msgid "Google OAuth2 Callback URL" +msgstr "Google OAuth2 Callback URL" + +#: awx/sso/conf.py:533 +msgid "" +"Create a project at https://console.developers.google.com/ to obtain an " +"OAuth2 key and secret for a web application. Ensure that the Google+ API is " +"enabled. Provide this URL as the callback URL for your application." +msgstr "" +"Crear un proyecto en https://console.developers.google.com/ para obtener una " +"clave OAuth2 y clave secreta para una aplicación web. Asegúrese que la API " +"de Google+ API está habilitada. Proporcione esta URL como URL callback para " +"su aplicación." + +#: awx/sso/conf.py:537 awx/sso/conf.py:548 awx/sso/conf.py:559 +#: awx/sso/conf.py:572 awx/sso/conf.py:586 awx/sso/conf.py:598 +#: awx/sso/conf.py:610 +msgid "Google OAuth2" +msgstr "Google OAuth2" + +#: awx/sso/conf.py:546 +msgid "Google OAuth2 Key" +msgstr "Clave Google OAuth2" + +#: awx/sso/conf.py:547 +msgid "" +"The OAuth2 key from your web application at https://console.developers." +"google.com/." +msgstr "" +"La clave OAuth2 de su dirección web en https://console.developers.google." +"com/." + +#: awx/sso/conf.py:557 +msgid "Google OAuth2 Secret" +msgstr "Clave secreta para Google OAuth2" + +#: awx/sso/conf.py:558 +msgid "" +"The OAuth2 secret from your web application at https://console.developers." +"google.com/." +msgstr "" +"La clave secreta OAuth2 de su dirección web en https://console.developers." +"google.com/." + +#: awx/sso/conf.py:569 +msgid "Google OAuth2 Whitelisted Domains" +msgstr "Lista blanca de dominios para Google OAuth2" + +#: awx/sso/conf.py:570 +msgid "" +"Update this setting to restrict the domains who are allowed to login using " +"Google OAuth2." +msgstr "" +"Actualizar esta configuración para restringir los dominios que están " +"permitidos para iniciar sesión utilizando Google OAuth2." + +#: awx/sso/conf.py:581 +msgid "Google OAuth2 Extra Arguments" +msgstr "Argumentos adicionales para Google OAuth2" + +#: awx/sso/conf.py:582 +msgid "" +"Extra arguments for Google OAuth2 login. When only allowing a single domain " +"to authenticate, set to `{\"hd\": \"yourdomain.com\"}` and Google will not " +"display any other accounts even if the user is logged in with multiple " +"Google accounts." +msgstr "" +"Argumentos adicionales para iniciar sesión con Google OAuth2. Cuando sólo se " +"permite un único dominio para autentificar, establecer a `{\"hd\": " +"\"sudominio.com\"}` y Google no mostrará otras cuentas incluso si el usuario " +"inició sesión en múltiple cuentas Google." + +#: awx/sso/conf.py:596 +msgid "Google OAuth2 Organization Map" +msgstr "Mapa de organización para Google OAuth2" + +#: awx/sso/conf.py:608 +msgid "Google OAuth2 Team Map" +msgstr "Mapa de equipo para Google OAuth2" + +#: awx/sso/conf.py:624 +msgid "GitHub OAuth2 Callback URL" +msgstr "GitHub OAuth2 Callback URL" + +#: awx/sso/conf.py:625 +msgid "" +"Create a developer application at https://github.com/settings/developers to " +"obtain an OAuth2 key (Client ID) and secret (Client Secret). Provide this " +"URL as the callback URL for your application." +msgstr "" +"Crear una aplicación de desarollo en https://github.com/settings/developers " +"para obtener una clave OAuth2 (ID del cliente) y clave secreta (Client " +"Secret). Proporcione esta URL como la URL callback para su aplicación." + +#: awx/sso/conf.py:629 awx/sso/conf.py:640 awx/sso/conf.py:650 +#: awx/sso/conf.py:662 awx/sso/conf.py:674 +msgid "GitHub OAuth2" +msgstr "GitHub OAuth2" + +#: awx/sso/conf.py:638 +msgid "GitHub OAuth2 Key" +msgstr "Clave para Github OAuth2" + +#: awx/sso/conf.py:639 +msgid "The OAuth2 key (Client ID) from your GitHub developer application." +msgstr "" +"La clave OAuth2 (ID del cliente) de su aplicación de desarrollo GitHub." + +#: awx/sso/conf.py:648 +msgid "GitHub OAuth2 Secret" +msgstr "Clave secreta para GitHub OAuth2" + +#: awx/sso/conf.py:649 +msgid "" +"The OAuth2 secret (Client Secret) from your GitHub developer application." +msgstr "" +"La clave secreta OAuth2 (Clave secreta del cliente) de su aplicación de " +"desarrollo GitHub." + +#: awx/sso/conf.py:660 +msgid "GitHub OAuth2 Organization Map" +msgstr "Mapa de organización para GitHub OAuth2" + +#: awx/sso/conf.py:672 +msgid "GitHub OAuth2 Team Map" +msgstr "Mapa de equipo para GitHub OAuth2" + +#: awx/sso/conf.py:688 +msgid "GitHub Organization OAuth2 Callback URL" +msgstr "OAuth2 URL Callback para organización Github" + +#: awx/sso/conf.py:689 awx/sso/conf.py:764 +msgid "" +"Create an organization-owned application at https://github.com/organizations/" +"/settings/applications and obtain an OAuth2 key (Client ID) and " +"secret (Client Secret). Provide this URL as the callback URL for your " +"application." +msgstr "" +"Crear una aplicación propia de la organización en https://github.com/" +"organizations//settings/applications y obtener una clave OAuth2 (ID " +"del cliente ) y clave secreta (Clave secreta del cliente). Proporcione esta " +"URL como URL callback para su aplicación." + +#: awx/sso/conf.py:693 awx/sso/conf.py:704 awx/sso/conf.py:714 +#: awx/sso/conf.py:726 awx/sso/conf.py:737 awx/sso/conf.py:749 +msgid "GitHub Organization OAuth2" +msgstr "OAuth2 para la organización Github" + +#: awx/sso/conf.py:702 +msgid "GitHub Organization OAuth2 Key" +msgstr "Clave OAuth2 para la organización Github" + +#: awx/sso/conf.py:703 awx/sso/conf.py:778 +msgid "The OAuth2 key (Client ID) from your GitHub organization application." +msgstr "" +"La clave OAuth2 (ID del cliente) de su aplicación de organización GitHub." + +#: awx/sso/conf.py:712 +msgid "GitHub Organization OAuth2 Secret" +msgstr "Clave secreta OAuth2 para la organización GitHub" + +#: awx/sso/conf.py:713 awx/sso/conf.py:788 +msgid "" +"The OAuth2 secret (Client Secret) from your GitHub organization application." +msgstr "" +"La clave secreta OAuth2 (Clave secreta del cliente) from your GitHub " +"organization application." + +#: awx/sso/conf.py:723 +msgid "GitHub Organization Name" +msgstr "Nombre para la organización GitHub" + +#: awx/sso/conf.py:724 +msgid "" +"The name of your GitHub organization, as used in your organization's URL: " +"https://github.com//." +msgstr "" +"El nombre de su organización de su GitHub, el utilizado en su URL de " +"organización: https://github.com//." + +#: awx/sso/conf.py:735 +msgid "GitHub Organization OAuth2 Organization Map" +msgstr "Mapa de organización OAuth2 para organizaciones GitHub" + +#: awx/sso/conf.py:747 +msgid "GitHub Organization OAuth2 Team Map" +msgstr "Mapa de equipos OAuth2 para equipos GitHub" + +#: awx/sso/conf.py:763 +msgid "GitHub Team OAuth2 Callback URL" +msgstr "URL callback OAuth2 para los equipos GitHub" + +#: awx/sso/conf.py:768 awx/sso/conf.py:779 awx/sso/conf.py:789 +#: awx/sso/conf.py:801 awx/sso/conf.py:812 awx/sso/conf.py:824 +msgid "GitHub Team OAuth2" +msgstr "OAuth2 para equipos GitHub" + +#: awx/sso/conf.py:777 +msgid "GitHub Team OAuth2 Key" +msgstr "Clave OAuth2 para equipos GitHub" + +#: awx/sso/conf.py:787 +msgid "GitHub Team OAuth2 Secret" +msgstr "Clave secreta OAuth2 para equipos GitHub" + +#: awx/sso/conf.py:798 +msgid "GitHub Team ID" +msgstr "ID de equipo GitHub" + +#: awx/sso/conf.py:799 +msgid "" +"Find the numeric team ID using the Github API: http://fabian-kostadinov." +"github.io/2015/01/16/how-to-find-a-github-team-id/." +msgstr "" +"Encuentre su identificador numérico de equipo utilizando la API de GitHub: " +"http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/." + +#: awx/sso/conf.py:810 +msgid "GitHub Team OAuth2 Organization Map" +msgstr "Mapa de organizaciones OAuth2 para los equipos GitHub" + +#: awx/sso/conf.py:822 +msgid "GitHub Team OAuth2 Team Map" +msgstr "Mapa de equipos OAuth2 para equipos GitHub" + +#: awx/sso/conf.py:838 +msgid "Azure AD OAuth2 Callback URL" +msgstr "URL callback OAuth2 para Azure AD" + +#: awx/sso/conf.py:839 +msgid "" +"Register an Azure AD application as described by https://msdn.microsoft.com/" +"en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " +"secret (Client Secret). Provide this URL as the callback URL for your " +"application." +msgstr "" +"Registrar una aplicacción AZURE AD como es descrito en https://msdn." +"microsoft.com/en-us/library/azure/dn132599.aspx y obtén una clave OAuth2 (ID " +"de client) y clave secreta (Clave secreta de cliente). Proporcione esta URL " +"como URL callback para su aplicación." + +#: awx/sso/conf.py:843 awx/sso/conf.py:854 awx/sso/conf.py:864 +#: awx/sso/conf.py:876 awx/sso/conf.py:888 +msgid "Azure AD OAuth2" +msgstr "Azure AD OAuth2" + +#: awx/sso/conf.py:852 +msgid "Azure AD OAuth2 Key" +msgstr "Clave OAuth2 para Azure AD" + +#: awx/sso/conf.py:853 +msgid "The OAuth2 key (Client ID) from your Azure AD application." +msgstr "La clave OAuth2 (ID del cliente) de su aplicación en Azure AD." + +#: awx/sso/conf.py:862 +msgid "Azure AD OAuth2 Secret" +msgstr "Clave secreta OAuth2 para Azure AD" + +#: awx/sso/conf.py:863 +msgid "The OAuth2 secret (Client Secret) from your Azure AD application." +msgstr "" +"La clave secreta OAuth2 (Clave secreta del cliente) de su aplicación Azure " +"AD." + +#: awx/sso/conf.py:874 +msgid "Azure AD OAuth2 Organization Map" +msgstr "Mapa de organizaciones OAuth2 para Azure AD" + +#: awx/sso/conf.py:886 +msgid "Azure AD OAuth2 Team Map" +msgstr "Mapa de equipos OAuth2 para Azure AD" + +#: awx/sso/conf.py:907 +msgid "SAML Service Provider Callback URL" +msgstr "URL Callback para proveedor de servicio SAML" + +#: awx/sso/conf.py:908 +msgid "" +"Register Tower as a service provider (SP) with each identity provider (IdP) " +"you have configured. Provide your SP Entity ID and this callback URL for " +"your application." +msgstr "" +"Registrar Tower como un proveedor de servicio (SP) con cada proveedor de " +"identificación (IdP) que ha configurado. Proporcione su ID de identidad SP y " +"esta dirección URL callback para su aplicación." + +#: awx/sso/conf.py:911 awx/sso/conf.py:925 awx/sso/conf.py:938 +#: awx/sso/conf.py:952 awx/sso/conf.py:966 awx/sso/conf.py:984 +#: awx/sso/conf.py:1006 awx/sso/conf.py:1025 awx/sso/conf.py:1045 +#: awx/sso/conf.py:1079 awx/sso/conf.py:1092 +msgid "SAML" +msgstr "SAML" + +#: awx/sso/conf.py:922 +msgid "SAML Service Provider Metadata URL" +msgstr "URL de metadatos para el proveedor de servicios SAML" + +#: awx/sso/conf.py:923 +msgid "" +"If your identity provider (IdP) allows uploading an XML metadata file, you " +"can download one from this URL." +msgstr "" +"Si su proveedor de identidad (IdP) permite subir ficheros de metadatos en " +"XML, puede descargarlo desde esta dirección." + +#: awx/sso/conf.py:935 +msgid "SAML Service Provider Entity ID" +msgstr "ID de la entidad del proveedor de servicio SAML" + +#: awx/sso/conf.py:936 +msgid "" +"The application-defined unique identifier used as the audience of the SAML " +"service provider (SP) configuration." +msgstr "" +"El identificador único para la aplicación definida utilizado como " +"configuración para la audiencia del proveedor de servicio (SP) SAML." + +#: awx/sso/conf.py:949 +msgid "SAML Service Provider Public Certificate" +msgstr "Certificado público del proveedor de servicio SAML" + +#: awx/sso/conf.py:950 +msgid "" +"Create a keypair for Tower to use as a service provider (SP) and include the " +"certificate content here." +msgstr "" +"Crear par de claves para Tower a usar como proveedor de servicio (SP) e " +"incluir el contenido del certificado aquí." + +#: awx/sso/conf.py:963 +msgid "SAML Service Provider Private Key" +msgstr "Clave privada del proveedor de servicio SAML" + +#: awx/sso/conf.py:964 +msgid "" +"Create a keypair for Tower to use as a service provider (SP) and include the " +"private key content here." +msgstr "" +"Crear par de claves para Tower a usar como proveedor de servicio (SP) e " +"incluir el contenido de la clave privada aquí." + +#: awx/sso/conf.py:982 +msgid "SAML Service Provider Organization Info" +msgstr "Información organizacional del proveedor de servicio SAML" + +#: awx/sso/conf.py:983 +msgid "Configure this setting with information about your app." +msgstr "Configure esta configuración con la información de su aplicación." + +#: awx/sso/conf.py:1004 +msgid "SAML Service Provider Technical Contact" +msgstr "Contacto técnico del proveedor de servicio SAML" + +#: awx/sso/conf.py:1005 awx/sso/conf.py:1024 +msgid "Configure this setting with your contact information." +msgstr "Configure este configuración con su información de contacto." + +#: awx/sso/conf.py:1023 +msgid "SAML Service Provider Support Contact" +msgstr "Contacto de soporte del proveedor de servicio SAML" + +#: awx/sso/conf.py:1038 +msgid "SAML Enabled Identity Providers" +msgstr "Proveedores de identidad habilitados SAML" + +#: awx/sso/conf.py:1039 +msgid "" +"Configure the Entity ID, SSO URL and certificate for each identity provider " +"(IdP) in use. Multiple SAML IdPs are supported. Some IdPs may provide user " +"data using attribute names that differ from the default OIDs (https://github." +"com/omab/python-social-auth/blob/master/social/backends/saml.py#L16). " +"Attribute names may be overridden for each IdP." +msgstr "" +"Configurar el ID de entidad, URL SSO y certificado para cada proveedor de " +"identidad (IdP) en uso. Varios IdPs SAML están soportadas. Algunos IdPs " +"pueden proporcionar datos de usuario usando nombres de atributos diferentes " +"a los valores por defecto OIDs (https://github.com/omab/python-social-auth/" +"blob/master/social/backends/saml.py#L16). Nombres de atributos pueden ser " +"redefinidos por cada IdP." + +#: awx/sso/conf.py:1077 +msgid "SAML Organization Map" +msgstr "Mapa de organización SAML" + +#: awx/sso/conf.py:1090 +msgid "SAML Team Map" +msgstr "Mapa de equipo SAML" + +#: awx/sso/fields.py:123 +msgid "Invalid connection option(s): {invalid_options}." +msgstr "Opción(es) de conexión inválida(s): {invalid_options}." + +#: awx/sso/fields.py:194 +msgid "Base" +msgstr "Base" + +#: awx/sso/fields.py:195 +msgid "One Level" +msgstr "Un nivel" + +#: awx/sso/fields.py:196 +msgid "Subtree" +msgstr "Árbol hijo" + +#: awx/sso/fields.py:214 +msgid "Expected a list of three items but got {length} instead." +msgstr "" +"Esperado una lista de tres elementos pero en cambio se proporcionaron " +"{length}" + +#: awx/sso/fields.py:215 +msgid "Expected an instance of LDAPSearch but got {input_type} instead." +msgstr "" +"Esperado una instancia de LDAPSearch pero en cambio se obtuvo {input_type}" + +#: awx/sso/fields.py:251 +msgid "" +"Expected an instance of LDAPSearch or LDAPSearchUnion but got {input_type} " +"instead." +msgstr "" +"Esperado una instancia de LDAPSearch o LDAPSearchUnion pero en cambio se " +"obtuvo {input_type}" + +#: awx/sso/fields.py:278 +msgid "Invalid user attribute(s): {invalid_attrs}." +msgstr "Atributo(s) de usuario inválido(s): {invalid_attrs}." + +#: awx/sso/fields.py:295 +msgid "Expected an instance of LDAPGroupType but got {input_type} instead." +msgstr "" +"Se esperaba una instancia de LDAPGroupType pero en cambio se obtuvo " +"{input_type}." + +#: awx/sso/fields.py:323 +msgid "Invalid user flag: \"{invalid_flag}\"." +msgstr "Indicador de usuario inválido: \"{invalid_flag}\"." + +#: awx/sso/fields.py:339 awx/sso/fields.py:506 +msgid "" +"Expected None, True, False, a string or list of strings but got {input_type} " +"instead." +msgstr "" +"Esperado None, True, False, una cadena de texto o una lista de cadenas de " +"texto pero en cambio se obtuvo {input_type}" + +#: awx/sso/fields.py:375 +msgid "Missing key(s): {missing_keys}." +msgstr "Clave(s) no encontradas: {missing_keys}." + +#: awx/sso/fields.py:376 +msgid "Invalid key(s): {invalid_keys}." +msgstr "Clave(s) inválida(s): {invalid_keys}." + +#: awx/sso/fields.py:425 awx/sso/fields.py:542 +msgid "Invalid key(s) for organization map: {invalid_keys}." +msgstr "Clave(s) inválida(s) para map de organización: {invalid_keys}." + +#: awx/sso/fields.py:443 +msgid "Missing required key for team map: {invalid_keys}." +msgstr "Clave necesario no encontrada para mapa de equipo: {invalid_keys}." + +#: awx/sso/fields.py:444 awx/sso/fields.py:561 +msgid "Invalid key(s) for team map: {invalid_keys}." +msgstr "Clave(s) inválida(s) para mapa de equipo: {invalid_keys}." + +#: awx/sso/fields.py:560 +msgid "Missing required key for team map: {missing_keys}." +msgstr "Clave necesaria no encontrada para mapa de equipo: {missing_keys}." + +#: awx/sso/fields.py:578 +msgid "Missing required key(s) for org info record: {missing_keys}." +msgstr "" +"Clave(s) necesaria(s) no encontrada(s) para el registro informacional de la " +"organización: {missing_keys}." + +#: awx/sso/fields.py:591 +msgid "Invalid language code(s) for org info: {invalid_lang_codes}." +msgstr "" +"Código(s) de lenguaje(s) inválido(s) para información organizacional: " +"{invalid_lang_codes}." + +#: awx/sso/fields.py:610 +msgid "Missing required key(s) for contact: {missing_keys}." +msgstr "Clave(s) necesaria(s) no encontrada(s) para contacto: {missing_keys}." + +#: awx/sso/fields.py:622 +msgid "Missing required key(s) for IdP: {missing_keys}." +msgstr "Clave(s) necesaria(s) no encontrada(s) para IdP: {missing_keys}." + +#: awx/sso/pipeline.py:24 +msgid "An account cannot be found for {0}" +msgstr "Una cuenta no puede ser encontrada para {0}" + +#: awx/sso/pipeline.py:30 +msgid "Your account is inactive" +msgstr "Su cuenta está inactiva" + +#: awx/sso/validators.py:19 awx/sso/validators.py:44 +#, python-format +msgid "DN must include \"%%(user)s\" placeholder for username: %s" +msgstr "DN debe incluir el marcador \"%%(user)s\" para el usuario: %s" + +#: awx/sso/validators.py:26 +#, python-format +msgid "Invalid DN: %s" +msgstr "DN inválido: %s" + +#: awx/sso/validators.py:56 +#, python-format +msgid "Invalid filter: %s" +msgstr "Filtro inválido: %s" + +#: awx/templates/error.html:4 awx/ui/templates/ui/index.html:8 +msgid "Ansible Tower" +msgstr "Ansible Tower" + +#: awx/templates/rest_framework/api.html:39 +msgid "Ansible Tower API Guide" +msgstr "Guía de la API de Ansible Tower" + +#: awx/templates/rest_framework/api.html:40 +msgid "Back to Ansible Tower" +msgstr "Volver a Ansible Tower" + +#: awx/templates/rest_framework/api.html:41 +msgid "Resize" +msgstr "Redimensionar" + +#: awx/templates/rest_framework/base.html:78 +#: awx/templates/rest_framework/base.html:92 +#, python-format +msgid "Make a GET request on the %(name)s resource" +msgstr "Realizar una petición GET en el recurso %(name)s " + +#: awx/templates/rest_framework/base.html:80 +msgid "Specify a format for the GET request" +msgstr "Especificar un formato para una petición GET" + +#: awx/templates/rest_framework/base.html:86 +#, python-format +msgid "" +"Make a GET request on the %(name)s resource with the format set to `" +"%(format)s`" +msgstr "" +"Realizar una petición GET en el recurso %(name)s con el formato establecido " +"a `%(format)s`" + +#: awx/templates/rest_framework/base.html:100 +#, python-format +msgid "Make an OPTIONS request on the %(name)s resource" +msgstr "Realizar una petición OPTIONS en el recurso %(name)s" + +#: awx/templates/rest_framework/base.html:106 +#, python-format +msgid "Make a DELETE request on the %(name)s resource" +msgstr "Realizar una petición DELETE en el recurso %(name)s" + +#: awx/templates/rest_framework/base.html:113 +msgid "Filters" +msgstr "Filtros" + +#: awx/templates/rest_framework/base.html:172 +#: awx/templates/rest_framework/base.html:186 +#, python-format +msgid "Make a POST request on the %(name)s resource" +msgstr "Realizar una petición POST en el recurso %(name)s" + +#: awx/templates/rest_framework/base.html:216 +#: awx/templates/rest_framework/base.html:230 +#, python-format +msgid "Make a PUT request on the %(name)s resource" +msgstr "Realizar una petición PUT en el recurso %(name)s" + +#: awx/templates/rest_framework/base.html:233 +#, python-format +msgid "Make a PATCH request on the %(name)s resource" +msgstr "Realizar una petición PATCH en el recurso %(name)s" + +#: awx/ui/apps.py:9 awx/ui/conf.py:22 awx/ui/conf.py:38 awx/ui/conf.py:53 +msgid "UI" +msgstr "UI" + +#: awx/ui/conf.py:16 +msgid "Off" +msgstr "Off" + +#: awx/ui/conf.py:17 +msgid "Anonymous" +msgstr "Anónimo" + +#: awx/ui/conf.py:18 +msgid "Detailed" +msgstr "Detallado" + +#: awx/ui/conf.py:20 +msgid "Analytics Tracking State" +msgstr "Estado de seguimiento analítico" + +#: awx/ui/conf.py:21 +msgid "Enable or Disable Analytics Tracking." +msgstr "Habilitar o deshabilitar el seguimiento analítico" + +#: awx/ui/conf.py:31 +msgid "Custom Login Info" +msgstr "Información personalizada de inicio de sesión" + +#: awx/ui/conf.py:32 +msgid "" +"If needed, you can add specific information (such as a legal notice or a " +"disclaimer) to a text box in the login modal using this setting. Any content " +"added must be in plain text, as custom HTML or other markup languages are " +"not supported. If multiple paragraphs of text are needed, new lines " +"(paragraphs) must be escaped as `\\n` within the block of text." +msgstr "" +"Si es necesario, usted puede añadir información específica (como un aviso " +"legal o condiciones) a un cuadro de texto en el formulario de inicio de " +"sesión utilizando esta configuración. Todo contenido debe ser añadido en " +"texto plano: HTML personalizado u otros lenguajes markup no están " +"permitidos. Si varios párrafos de texto son necesarios, nuevas líneas " +"(párrafos) pueden ser indicados con `\\n` dentro del bloque de texto." + +#: awx/ui/conf.py:48 +msgid "Custom Logo" +msgstr "Logo personalizado" + +#: awx/ui/conf.py:49 +msgid "" +"To set up a custom logo, provide a file that you create. For the custom logo " +"to look its best, use a .png file with a transparent background. GIF, PNG " +"and JPEG formats are supported." +msgstr "" +"Para configurar un logo personalizado, proporcione un fichero que ha creado. " +"Para que los logos personalizados se vean mejor, utilice un fichero .png con " +"fondo transparente. Formatos GIF, PNG y JPEG están soportados." + +#: awx/ui/fields.py:29 +msgid "" +"Invalid format for custom logo. Must be a data URL with a base64-encoded " +"GIF, PNG or JPEG image." +msgstr "" +"Formato inválido para el logo personalizado. Debe ser una URL de datos con " +"una imagen GIF codificada en base64, PNG o JPEG." + +#: awx/ui/fields.py:30 +msgid "Invalid base64-encoded data in data URL." +msgstr "Dato codificado en base64 inválido en la URL de datos" + +#: awx/ui/templates/ui/index.html:49 +msgid "" +"Your session will expire in 60 seconds, would you like to continue?" +msgstr "" +"Su sesión caducará en 60 segundos, ¿Le gustaría continuar?" + +#: awx/ui/templates/ui/index.html:64 +msgid "CANCEL" +msgstr "CANCELAR" + +#: awx/ui/templates/ui/index.html:116 +msgid "Set how many days of data should be retained." +msgstr "Establecer cuántos días de datos debería ser retenidos." + +#: awx/ui/templates/ui/index.html:122 +msgid "" +"Please enter an integer that is not " +"negative that is lower than 9999." +msgstr "" +"Por favor introduzca un entero que " +"no sea negativo que sea menor de " +"9999." + +#: awx/ui/templates/ui/index.html:127 +msgid "" +"For facts collected older than the time period specified, save one fact scan " +"(snapshot) per time window (frequency). For example, facts older than 30 " +"days are purged, while one weekly fact scan is kept.\n" +"
\n" +"
CAUTION: Setting both numerical variables to \"0\" " +"will delete all facts.\n" +"
\n" +"
" +msgstr "" +"Para facts obtenidos más antiguos que el periodo especificado, guarda un " +"escanéo de facts (instantánea [snapshot]) por una ventana de tiempo " +"(frecuencia). Por ejemplo, facts más antiguos de 30 días son eliminados, " +"mientras que escaneo de facts de una semana son mantenidos.\n" +"
\n" +"
CUIDADO: Ajustar ambas variables numéricas a \"0\" " +"eliminará todos los facts.\n" +"
\n" +"
" + +#: awx/ui/templates/ui/index.html:136 +msgid "Select a time period after which to remove old facts" +msgstr "" +"Seleccione un periodo en el que después de él se eliminará los facts " +"antiguos." + +#: awx/ui/templates/ui/index.html:150 +msgid "" +"Please enter an integer " +"that is not negative " +"that is lower than 9999." +msgstr "" +"Por favor introduzca un entero " +"que no sea negativo " +"que sea menor 9999." + +#: awx/ui/templates/ui/index.html:155 +msgid "Select a frequency for snapshot retention" +msgstr "" +"Selecciona las frecuencia para la retención de instantáneas (snapshots)" + +#: awx/ui/templates/ui/index.html:169 +msgid "" +"Please enter an integer that is not negative that is " +"lower than 9999." +msgstr "" +"Por favor introduzca un entero que no sea negativo que sea " +"menor de 9999." + +#: awx/ui/templates/ui/index.html:175 +msgid "working..." +msgstr "en funcionamiento..." diff --git a/awx/ui/po/es.po b/awx/ui/po/es.po new file mode 100644 index 0000000000..4629578866 --- /dev/null +++ b/awx/ui/po/es.po @@ -0,0 +1,3768 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: ANSIBLE TOWER UI 0.1\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Alberto Gonzalez \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Language: es\n" +"X-Generator: Poedit 1.6.10\n" + +#: client/src/notifications/notificationTemplates.form.js:375 +msgid "%s or %s" +msgstr "%s o %s" + +#: client/src/controllers/Projects.js:439 +#: client/src/controllers/Projects.js:721 +msgid "" +"%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." +msgstr "" +"%sNota%s: Mercurial no soporta autentificación utilizando contraseña. No " +"introduzca el usuario y la clave en la dirección URL. Si utiliza Bitbucket y " +"SSH, no indique su usuario de Bitbucket." + +#: client/src/controllers/Projects.js:426 +#: client/src/controllers/Projects.js:708 +msgid "" +"%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." +msgstr "" +"%sNota%s: Si usted utiliza el protocolo SSH para GitHub o Bitbucker, " +"introduzca sólo la clave de SSH, no introduzca el usuario (otro distinto a " +"git). Además, GitHub y Bitbucket no soporta autentificación utilizando " +"contraseña cuando se utiliza SSH. El protocolo de sólo lectura GIT (git://) " +"no utiliza usuario y contraseña." + +#: client/src/forms/Credentials.js:288 +msgid "(defaults to %s)" +msgstr "(valor por defecto a %s)" + +#: client/src/organizations/list/organizations-list.partial.html:15 +msgid "+ ADD" +msgstr "+ AÑADIR" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:33 +msgid "A schedule name is required." +msgstr "Un nombre para el planificador es necesario." + +#: client/src/controllers/Users.js:185 +msgid "A value is required" +msgstr "Un valor es necesario" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:167 +msgid "A value is required." +msgstr "Un valor es necesario." + +#: client/src/about/about.route.js:10 +msgid "ABOUT" +msgstr "ACERCA DE" + +#: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:16 +msgid "ACTION" +msgstr "ACCIÓN" + +#: client/src/activity-stream/activitystream.route.js:27 +msgid "ACTIVITY STREAM" +msgstr "FLUJO DE ACTIVIDAD" + +#: client/src/forms/Credentials.js:450 client/src/forms/JobTemplates.js:430 +#: client/src/forms/Organizations.js:75 client/src/forms/Projects.js:238 +#: client/src/forms/Teams.js:86 client/src/forms/Workflows.js:128 +#: client/src/inventory-scripts/inventory-scripts.list.js:45 +#: client/src/lists/Credentials.js:60 client/src/lists/Inventories.js:68 +#: client/src/lists/Projects.js:77 client/src/lists/Schedules.js:70 +#: client/src/lists/Teams.js:50 client/src/lists/Templates.js:62 +#: client/src/lists/Users.js:52 +#: client/src/notifications/notificationTemplates.list.js:52 +msgid "ADD" +msgstr "AÑADIR" + +#: client/src/notifications/notifications.list.js:66 +msgid "ADD NOTIFICATION TEMPLATE" +msgstr "AÑADIR UNA PLANTILLA DE NOTIFICACIÓN" + +#: client/src/forms/Teams.js:158 client/src/forms/Users.js:215 +msgid "ADD PERMISSIONS" +msgstr "AÑADIR PERMISOS" + +#: client/src/shared/smart-search/smart-search.partial.html:54 +msgid "ADDITIONAL INFORMATION:" +msgstr "INFORMACIÓN ADICIONAL:" + +#: client/src/organizations/linkout/organizations-linkout.route.js:325 +msgid "ADMINS" +msgstr "ADMINS" + +#: client/src/helpers/ActivityStream.js:19 +msgid "ALL ACTIVITY" +msgstr "TODA LA ACTIVIDAD" + +#: client/src/forms/Credentials.js:199 +msgid "API Key" +msgstr "Clave API" + +#: client/src/notifications/notificationTemplates.form.js:251 +msgid "API Service/Integration Key" +msgstr "Servicio API/Clave de integración" + +#: client/src/notifications/shared/type-change.service.js:52 +msgid "API Token" +msgstr "Token API" + +#: client/src/setup-menu/setup-menu.partial.html:59 +msgid "About Tower" +msgstr "Sobre Tower" + +#: client/src/forms/Credentials.js:92 +msgid "Access Key" +msgstr "Clave de acceso" + +#: client/src/notifications/notificationTemplates.form.js:229 +msgid "Account SID" +msgstr "Cuenta SID" + +#: client/src/notifications/notificationTemplates.form.js:187 +msgid "Account Token" +msgstr "Cuenta Token" + +#: client/src/forms/ActivityDetail.js:38 +msgid "Action" +msgstr "Acción" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 +#: client/src/shared/list-generator/list-generator.factory.js:547 +msgid "Actions" +msgstr "Acciones" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:17 +#: client/src/lists/Templates.js:40 +msgid "Activity" +msgstr "Actividad" + +#: client/src/forms/ActivityDetail.js:25 +msgid "Activity Detail" +msgstr "Detalles de la actividad" + +#: client/src/configuration/system-form/configuration-system.controller.js:81 +#: client/src/lists/Streams.js:16 client/src/lists/Streams.js:17 +msgid "Activity Stream" +msgstr "Flujo de actividad" + +#: client/src/forms/Inventories.js:105 client/src/forms/Organizations.js:72 +#: client/src/forms/Teams.js:83 client/src/forms/Workflows.js:125 +#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 +msgid "Add" +msgstr "Añadir" + +#: client/src/lists/Credentials.js:17 +msgid "Add Credentials" +msgstr "Añadir credencial" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:12 +msgid "Add Existing Hosts" +msgstr "Añadir servidores existentes" + +#: client/src/lists/Inventories.js:15 +msgid "Add Inventories" +msgstr "Añadir inventarios" + +#: client/src/notifications/notifications.list.js:61 +msgid "Add Notification" +msgstr "Añadir notificación" + +#: client/src/shared/stateDefinitions.factory.js:277 +msgid "Add Permissions" +msgstr "Añadir permisos" + +#: client/src/lists/Projects.js:15 +msgid "Add Project" +msgstr "Añadir proyecto" + +#: client/src/forms/JobTemplates.js:475 client/src/forms/Workflows.js:173 +#: client/src/shared/form-generator.js:1719 +msgid "Add Survey" +msgstr "Añadir cuestionario" + +#: client/src/lists/Teams.js:15 +msgid "Add Team" +msgstr "Añadir equipo" + +#: client/src/forms/Teams.js:84 +msgid "Add User" +msgstr "Añadir usuario" + +#: client/src/lists/Users.js:19 +#: client/src/shared/stateDefinitions.factory.js:342 +#: client/src/shared/stateDefinitions.factory.js:511 +msgid "Add Users" +msgstr "Añadir usuarios" + +#: client/src/forms/Organizations.js:73 +msgid "Add Users to this organization." +msgstr "Añadir usuarios a la organización." + +#: client/src/lists/Schedules.js:68 +msgid "Add a new schedule" +msgstr "Añadir un nuevo planificador" + +#: client/src/forms/Credentials.js:448 client/src/forms/Inventories.js:107 +#: client/src/forms/JobTemplates.js:428 client/src/forms/Projects.js:236 +#: client/src/forms/Workflows.js:126 +msgid "Add a permission" +msgstr "Añadir un permiso" + +#: client/src/setup-menu/setup-menu.partial.html:23 +msgid "" +"Add passwords, SSH keys, etc. for Tower to use when launching jobs against " +"machines, or when syncing inventories or projects." +msgstr "" +"Añadir contraseñas, claves SSH, etc. para ser utilizadas por Tower al " +"ejecutar un nuevo trabajo sobre máquinas, o cuando se sincroniza inventarios " +"o proyectos." + +#: client/src/shared/form-generator.js:1462 +msgid "Admin" +msgstr "Administrador" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:37 +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:43 +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:65 +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:74 +#: client/src/job-detail/job-detail.partial.html:197 +#: client/src/job-detail/job-detail.partial.html:256 +#: client/src/job-detail/job-detail.partial.html:340 +msgid "All" +msgstr "Todo" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:23 +msgid "All Activity" +msgstr "Todas las actividades" + +#: client/src/lists/AllJobs.js:16 +#: client/src/portal-mode/portal-mode-jobs.partial.html:7 +#: client/src/portal-mode/portal-mode-layout.partial.html:12 +msgid "All Jobs" +msgstr "Todos los trabajos" + +#: client/src/forms/JobTemplates.js:303 client/src/forms/JobTemplates.js:310 +msgid "Allow Provisioning Callbacks" +msgstr "Permitir la ejecución utilizando Callbacks" + +#: client/src/setup-menu/setup-menu.partial.html:11 +msgid "Allow others to sign into Tower and own the content they create." +msgstr "Permitir a otros entrar en Tower y poseer el contenido que creen." + +#: client/src/forms/WorkflowMaker.js:50 +msgid "Always" +msgstr "Siempre" + +#: client/src/controllers/Projects.js:262 +msgid "" +"An SCM update does not appear to be running for project: %s. Click the " +"%sRefresh%s button to view the latest status." +msgstr "" +"Una actualización de SCM no aparece estar siendo ejecutada para los " +"proyectos: %s. Pulse sobre el botón %sActualizar%s para ver el estado más " +"reciente." + +#: client/src/controllers/Credentials.js:104 +msgid "Are you sure you want to delete the credential below?" +msgstr "¿Está seguro que quiere eliminar la credencial indicada?" + +#: client/src/helpers/Jobs.js:231 +msgid "Are you sure you want to delete the job below?" +msgstr "¿Está seguro que quiere eliminar el trabajo indicado?" + +#: client/src/notifications/notification-templates-list/list.controller.js:184 +msgid "Are you sure you want to delete the notification template below?" +msgstr "" +"¿Está seguro que quiere eliminar la plantilla de notificación indicada?" + +#: client/src/organizations/list/organizations-list.controller.js:166 +msgid "Are you sure you want to delete the organization below?" +msgstr "¿Está seguro que quiere eliminar la organización indicada?" + +#: client/src/controllers/Projects.js:204 +msgid "Are you sure you want to delete the project below?" +msgstr "¿Está seguro que quiere eliminar el proyecto indicado?" + +#: client/src/controllers/Users.js:102 +msgid "Are you sure you want to delete the user below?" +msgstr "¿Está seguro que quiere eliminar el usuario indicado?" + +#: client/src/controllers/Credentials.js:578 +#: client/src/controllers/Projects.js:689 +msgid "Are you sure you want to remove the %s below from %s?" +msgstr "¿Esa seguro que quiere eliminar el %s indicado de %s?" + +#: client/src/forms/EventsViewer.js:57 +msgid "Arguments" +msgstr "Argumentos" + +#: client/src/forms/Credentials.js:233 client/src/forms/Credentials.js:272 +#: client/src/forms/Credentials.js:312 client/src/forms/Credentials.js:398 +msgid "Ask at runtime?" +msgstr "¿Preguntar durante la ejecución?" + +#: client/src/shared/form-generator.js:1464 +msgid "Auditor" +msgstr "Auditor" + +#: client/src/configuration/configuration.partial.html:15 +msgid "Authentication" +msgstr "Identificación" + +#: 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 "" +"Identificación para el acceso a dispositivos de red. Puede incluir claves " +"SSH, usuarios, contraseñas, e información de autorización. Las credenciales " +"de Red son utilizadas al lanzar trabajos que ejecutan playbooks sobre " +"dispositivos de red." + +#: 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 "" +"Identificación para máquinas remotas. Puede incluir claves SSH, usuarios, " +"contraseñas e información de sudo. Las credenciales de máquina son " +"utilizadas al lanzar trabajos que ejecutan playbooks contra servidores " +"remotos." + +#: client/src/forms/Credentials.js:344 +msgid "Authorize" +msgstr "Autorizar" + +#: client/src/forms/Credentials.js:352 +msgid "Authorize Password" +msgstr "Contraseña de autorización" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:101 +msgid "Azure AD" +msgstr "Azure AD" + +#: client/src/shared/directives.js:133 +msgid "BROWSE" +msgstr "NAVEGAR" + +#: 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 "" +"Directorio base utilizado para encontrar playbooks. Los directorios " +"encontrados dentro de este directorio serán listados en el desplegable " +"correspondiente a la lista de playbook. Junto a la ruta base y el el " +"directorio del playbook seleccionado se creará la ruta completa para " +"encontrar los playbooks." + +#: client/src/forms/JobTemplates.js:297 +msgid "Become Privilege Escalation" +msgstr "Activar la escalada de privilegios" + +#: client/src/license/license.partial.html:104 +msgid "Browse" +msgstr "Navegar" + +#: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:20 +msgid "CHANGES" +msgstr "MODIFICACIONES" + +#: client/src/shared/smart-search/smart-search.partial.html:31 +msgid "CLEAR ALL" +msgstr "LIMPIAR TODO" + +#: client/src/inventories/manage/copy-move/copy-move.route.js:29 +#: client/src/inventories/manage/copy-move/copy-move.route.js:65 +msgid "COPY OR MOVE" +msgstr "COPIAR O MOVER" + +#: client/src/shared/stateDefinitions.factory.js:153 +msgid "CREATE %s" +msgstr "CREAR %s" + +#: client/src/inventories/main.js:117 client/src/scheduler/main.js:190 +#: client/src/scheduler/main.js:274 client/src/scheduler/main.js:97 +msgid "CREATE SCHEDULE" +msgstr "CREAR PROGRAMACIÓN" + +#: client/src/management-jobs/scheduler/main.js:81 +msgid "CREATE SCHEDULED JOB" +msgstr "CREAR TRABAJO PROGRAMADO" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:80 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:82 +msgid "CREDENTIAL" +msgstr "CREDENCIAL" + +#: client/src/app.js:320 client/src/helpers/ActivityStream.js:29 +msgid "CREDENTIALS" +msgstr "CREDENCIALES" + +#: client/src/forms/Projects.js:194 +msgid "Cache Timeout" +msgstr "Tiempo de espera para la expiración de la caché" + +#: client/src/forms/Projects.js:183 +msgid "Cache Timeout%s (seconds)%s" +msgstr "Tiempo de espera para la expiración de la caché%s (segundos)%s" + +#: client/src/controllers/Projects.js:195 client/src/controllers/Users.js:95 +msgid "Call to %s failed. DELETE returned status:" +msgstr "Fallo en la llamada a %s. DELETE ha devuelto el estado:" + +#: client/src/controllers/Projects.js:243 +#: client/src/controllers/Projects.js:259 +msgid "Call to %s failed. GET status:" +msgstr "Fallo en la llamada a %s. Estado GET:" + +#: client/src/controllers/Projects.js:683 +msgid "Call to %s failed. POST returned status:" +msgstr "Fallo en la llamada a %s. POST ha devuelto el estado:" + +#: client/src/controllers/Projects.js:222 +msgid "Call to %s failed. POST status:" +msgstr "Fallo en la llamada a %s. Estado POST :" + +#: client/src/management-jobs/card/card.controller.js:30 +msgid "Call to %s failed. Return status: %d" +msgstr "Fallo en la llamada a %s. Ha devuelto el estado: %d" + +#: client/src/controllers/Projects.js:268 +msgid "Call to get project failed. GET status:" +msgstr "Fallo en la obtención del proyecto. Estado GET :" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:171 +#: client/src/configuration/configuration.controller.js:449 +#: client/src/helpers/Jobs.js:161 client/src/shared/form-generator.js:1707 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:12 +#: client/src/workflow-results/workflow-results.partial.html:42 +msgid "Cancel" +msgstr "Cancelar" + +#: client/src/controllers/Projects.js:238 +msgid "Cancel Not Allowed" +msgstr "Cancelación no permitida." + +#: client/src/lists/Projects.js:122 +msgid "Cancel the SCM update" +msgstr "Cancelar la actualización de SCM" + +#: client/src/lists/AllJobs.js:108 +msgid "Cancel the job" +msgstr "Cancelar el trabajo." + +#: client/src/controllers/Projects.js:84 client/src/helpers/Projects.js:79 +msgid "Canceled. Click for details" +msgstr "Cancelado. Pulse para mostrar más detalles." + +#: client/src/shared/smart-search/smart-search.controller.js:38 +#: client/src/shared/smart-search/smart-search.controller.js:80 +msgid "Cannot search running job" +msgstr "Imposible buscar en trabajos en ejecución." + +#: client/src/forms/Projects.js:82 +msgid "Change %s under \"Configure Tower\" to change this location." +msgstr "" +"Modificar %s dentro de \"Configurar Tower\" para cambiar esta ubicación." + +#: client/src/forms/ActivityDetail.js:43 +msgid "Changes" +msgstr "Modificaciones" + +#: client/src/shared/form-generator.js:1083 +msgid "Choose a %s" +msgstr "Escoger un %s" + +#: client/src/shared/directives.js:134 +msgid "Choose file" +msgstr "Escoger fichero" + +#: client/src/license/license.partial.html:97 +msgid "" +"Choose your license file, agree to the End User License Agreement, and click " +"submit." +msgstr "" +"Escoja su fichero de licencia, aceptando el Acuerdo de licencia de usuario " +"final, y pulse sobre validar." + +#: client/src/forms/Projects.js:151 +msgid "Clean" +msgstr "Limpiar" + +#: client/src/lists/Inventories.js:18 +msgid "" +"Click on a row to select it, and click Finished when done. Click the %s " +"button to create a new inventory." +msgstr "" +"Pulse sobre una fila para seleccionarla, y pulse Finalizado una vez " +"terminado. Pulse sobre el botón %s para crear un nuevo inventario." + +#: client/src/lists/Teams.js:18 +msgid "" +"Click on a row to select it, and click Finished when done. Click the %s " +"button to create a new team." +msgstr "" +"Pulse sobre una fila para seleccionarla, y pulse Finalizado una vez " +"terminado. Pulse sobre el botón %s para crear un nuevo equipo." + +#: client/src/lists/Templates.js:19 +msgid "" +"Click on a row to select it, and click Finished when done. Use the %s button " +"to create a new job template." +msgstr "" +"Pulse sobre una fila para seleccionarla, y pulse Finalizado una vez " +"terminado. Pulse sobre el botón %s para crear una nueva plantilla de trabajo." + +#: client/src/forms/Credentials.js:322 +msgid "Client ID" +msgstr "ID del cliente" + +#: client/src/notifications/notificationTemplates.form.js:262 +msgid "Client Identifier" +msgstr "Identificador del cliente" + +#: client/src/forms/Credentials.js:331 +msgid "Client Secret" +msgstr "Pregunta secreta del cliente" + +#: client/src/shared/form-generator.js:1711 +msgid "Close" +msgstr "Cerrar" + +#: client/src/forms/JobTemplates.js:168 client/src/forms/JobTemplates.js:180 +#: client/src/job-detail/job-detail.partial.html:124 +msgid "Cloud Credential" +msgstr "Credencial cloud" + +#: client/src/helpers/Credentials.js:160 client/src/helpers/Credentials.js:296 +msgid "CloudForms URL" +msgstr "URL CloudForms" + +#: client/src/job-results/job-results.controller.js:205 +#: client/src/standard-out/standard-out.controller.js:233 +#: client/src/workflow-results/workflow-results.controller.js:136 +msgid "Collapse Output" +msgstr "Colapsar salida" + +#: client/src/notifications/notificationTemplates.form.js:298 +msgid "Color can be one of %s." +msgstr "El color puede ser solo uno de estos %s." + +#: client/src/lists/CompletedJobs.js:18 +msgid "Completed Jobs" +msgstr "Trabajos terminados" + +#: client/src/management-jobs/card/card.partial.html:32 +msgid "Configure Notifications" +msgstr "Configurar las notificaciones" + +#: client/src/configuration/configuration.partial.html:10 +#: client/src/setup-menu/setup-menu.partial.html:53 +msgid "Configure Tower" +msgstr "Configurar Tower" + +#: client/src/forms/Users.js:82 +msgid "Confirm Password" +msgstr "Confirmar la contraseña" + +#: client/src/configuration/configuration.controller.js:456 +msgid "Confirm Reset" +msgstr "Confirmar la reinicialización" + +#: client/src/configuration/configuration.controller.js:465 +msgid "Confirm factory reset" +msgstr "Confirmar la reinicialización a valores de fábrica" + +#: client/src/forms/JobTemplates.js:259 client/src/forms/JobTemplates.js:277 +#: client/src/forms/WorkflowMaker.js:141 client/src/forms/WorkflowMaker.js:156 +msgid "" +"Consult the Ansible documentation for further details on the usage of tags." +msgstr "" +"Consultar la documentación de Ansible para información más detallada del uso " +"de etiquetas (tags)." + +#: client/src/forms/JobTemplates.js:245 +msgid "" +"Control the level of output ansible will produce as the playbook executes." +msgstr "" +"Controlar el nivel de salida que ansible producirá al ejecutar playbooks." + +#: client/src/lists/Templates.js:99 +msgid "Copy" +msgstr "Copiar" + +#: client/src/lists/Templates.js:102 +msgid "Copy template" +msgstr "Copiar plantilla" + +#: client/src/forms/Credentials.js:18 +msgid "Create Credential" +msgstr "Crear credencial" + +#: client/src/lists/Users.js:46 +msgid "Create New" +msgstr "Crear nuevo" + +#: client/src/lists/Credentials.js:58 +msgid "Create a new credential" +msgstr "Crear una nueva credencial" + +#: client/src/inventory-scripts/inventory-scripts.list.js:43 +msgid "Create a new custom inventory" +msgstr "Crear un nuevo inventario personalizado" + +#: client/src/lists/Inventories.js:66 +msgid "Create a new inventory" +msgstr "Crear un nuevo inventario" + +#: client/src/notifications/notificationTemplates.list.js:50 +#: client/src/notifications/notifications.list.js:64 +msgid "Create a new notification template" +msgstr "Crear una nueva plantilla de notificación" + +#: client/src/organizations/list/organizations-list.partial.html:16 +msgid "Create a new organization" +msgstr "Crear una nueva organización" + +#: client/src/lists/Projects.js:75 +msgid "Create a new project" +msgstr "Crear un nuevo proyecto" + +#: client/src/lists/Teams.js:48 +msgid "Create a new team" +msgstr "Crear un nuevo equipo" + +#: client/src/lists/Templates.js:60 +msgid "Create a new template" +msgstr "Crear una nueva plantilla" + +#: client/src/lists/Users.js:50 +msgid "Create a new user" +msgstr "Crear un nuevo usuario" + +#: client/src/setup-menu/setup-menu.partial.html:35 +msgid "Create and edit scripts to dynamically load hosts from any source." +msgstr "" +"Crear y editar scripts que dinámicamente carguen servidores a partir de " +"cualquier origen." + +#: client/src/setup-menu/setup-menu.partial.html:42 +msgid "" +"Create templates for sending notifications with Email, HipChat, Slack, and " +"SMS." +msgstr "" +"Crear plantillas para enviar notificaciones a través de email, HipChat, " +"Slack y SMS." + +#: client/src/forms/EventsViewer.js:32 client/src/lists/JobEvents.js:44 +msgid "Created On" +msgstr "Creado el" + +#: client/src/forms/JobTemplates.js:157 client/src/forms/WorkflowMaker.js:60 +#: client/src/forms/WorkflowMaker.js:69 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:67 +msgid "Credential" +msgstr "Credencial" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:123 +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:57 +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:24 +#: client/src/lists/Credentials.js:18 client/src/lists/Credentials.js:19 +#: client/src/setup-menu/setup-menu.partial.html:22 +msgid "Credentials" +msgstr "Credenciales" + +#: client/src/controllers/Credentials.js:348 +msgid "" +"Credentials are only shared within an organization. Assign credentials to an " +"organization to delegate credential permissions. The organization cannot be " +"edited after credentials are assigned." +msgstr "" +"Las credenciales son solo compartidas a nivel de organización. Asignar " +"credenciales a una organización para delegar permisos de credencial. La " +"organización no puede ser editar después de que las credenciales son " +"asignadas." + +#: client/src/shared/directives.js:135 +msgid "Current Image:" +msgstr "Script personalizado" + +#: client/src/inventory-scripts/inventory-scripts.form.js:53 +#: client/src/inventory-scripts/inventory-scripts.form.js:63 +msgid "Custom Script" +msgstr "El logo personalizado ha sido subido." + +#: client/src/app.js:411 +msgid "DASHBOARD" +msgstr "PANEL DE CONTROL" + +#: client/src/controllers/Credentials.js:106 +#: client/src/controllers/Credentials.js:580 +#: client/src/controllers/Projects.js:691 client/src/controllers/Users.js:104 +#: client/src/notifications/notification-templates-list/list.controller.js:189 +#: client/src/organizations/list/organizations-list.controller.js:168 +msgid "DELETE" +msgstr "ELIMINAR" + +#: client/src/job-detail/job-detail.partial.html:176 +#: client/src/job-detail/job-detail.partial.html:179 +msgid "DETAILS" +msgstr "DETALLES" + +#: client/src/controllers/Credentials.js:103 +#: client/src/controllers/Credentials.js:577 +#: client/src/controllers/Projects.js:203 +#: client/src/controllers/Projects.js:688 client/src/controllers/Users.js:101 +#: client/src/helpers/Jobs.js:165 +#: client/src/inventory-scripts/inventory-scripts.list.js:74 +#: client/src/lists/Credentials.js:91 client/src/lists/Inventories.js:92 +#: client/src/lists/Schedules.js:92 client/src/lists/Teams.js:77 +#: client/src/lists/Templates.js:124 client/src/lists/Users.js:81 +#: client/src/notifications/notification-templates-list/list.controller.js:186 +#: client/src/notifications/notificationTemplates.list.js:89 +#: client/src/organizations/list/organizations-list.controller.js:165 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:13 +#: client/src/workflow-results/workflow-results.partial.html:54 +msgid "Delete" +msgstr "ELIMINAR" + +#: client/src/lists/Credentials.js:93 +msgid "Delete credential" +msgstr "Eliminar la credencial." + +#: client/src/lists/Inventories.js:94 +msgid "Delete inventory" +msgstr "Eliminar el inventario" + +#: client/src/inventory-scripts/inventory-scripts.list.js:76 +msgid "Delete inventory script" +msgstr "Eliminar el script de inventario." + +#: client/src/notifications/notificationTemplates.list.js:91 +msgid "Delete notification" +msgstr "Eliminar la notificación" + +#: client/src/forms/Projects.js:161 +msgid "Delete on Update" +msgstr "Eliminar la actualización" + +#: client/src/lists/Schedules.js:95 +msgid "Delete schedule" +msgstr "Eliminar planificación" + +#: client/src/lists/Teams.js:81 +msgid "Delete team" +msgstr "Eliminar el equipo" + +#: client/src/lists/Templates.js:127 +msgid "Delete template" +msgstr "Eliminar la plantilla" + +#: client/src/lists/AllJobs.js:115 client/src/lists/CompletedJobs.js:82 +msgid "Delete the job" +msgstr "Eliminar el trabajo" + +#: client/src/forms/Projects.js:163 +msgid "" +"Delete the local repository in its entirety prior to performing an update." +msgstr "" +"Eliminar el repositorio local en su totalidad antes de realizar la " +"actualización." + +#: client/src/lists/Projects.js:116 +msgid "Delete the project" +msgstr "Eliminar el proyecto" + +#: client/src/lists/ScheduledJobs.js:82 +msgid "Delete the schedule" +msgstr "Eliminar la planificación" + +#: client/src/lists/Users.js:85 +msgid "Delete user" +msgstr "Eliminar el usuario" + +#: client/src/forms/Projects.js:163 +msgid "" +"Depending on the size of the repository this may significantly increase the " +"amount of time required to complete an update." +msgstr "" +"Dependiendo del tamaño del repositorio esto podría incrementar " +"significativamente el tiempo necesario para completar una actualización." + +#: client/src/forms/Credentials.js:41 client/src/forms/Inventories.js:37 +#: client/src/forms/JobTemplates.js:42 client/src/forms/Organizations.js:33 +#: client/src/forms/Projects.js:38 client/src/forms/Teams.js:34 +#: client/src/forms/Users.js:144 client/src/forms/Users.js:170 +#: client/src/forms/Workflows.js:41 +#: client/src/inventory-scripts/inventory-scripts.form.js:35 +#: client/src/inventory-scripts/inventory-scripts.list.js:25 +#: client/src/lists/Credentials.js:34 +#: client/src/lists/PortalJobTemplates.js:29 client/src/lists/Teams.js:30 +#: client/src/lists/Templates.js:36 +#: client/src/notifications/notificationTemplates.form.js:39 +msgid "Description" +msgstr "Descripción" + +#: client/src/notifications/notificationTemplates.form.js:141 +#: client/src/notifications/notificationTemplates.form.js:146 +#: client/src/notifications/notificationTemplates.form.js:158 +#: client/src/notifications/notificationTemplates.form.js:163 +#: client/src/notifications/notificationTemplates.form.js:376 +msgid "Destination Channels" +msgstr "Canales destinatarios" + +#: client/src/notifications/notificationTemplates.form.js:371 +msgid "Destination Channels or Users" +msgstr "Canales destinatarios o usuarios" + +#: client/src/notifications/notificationTemplates.form.js:212 +#: client/src/notifications/notificationTemplates.form.js:217 +msgid "Destination SMS Number" +msgstr "Número SMS del destinatario" + +#: client/src/license/license.partial.html:5 +#: client/src/shared/form-generator.js:1493 +msgid "Details" +msgstr "Detalles" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:70 +#: client/src/configuration/configuration.controller.js:181 +#: client/src/configuration/configuration.controller.js:243 +#: client/src/configuration/system-form/configuration-system.controller.js:49 +msgid "Discard changes" +msgstr "Descartar cambios" + +#: client/src/forms/Teams.js:147 +msgid "Dissasociate permission from team" +msgstr "Desasociar permiso de un equipo." + +#: client/src/forms/Users.js:224 +msgid "Dissasociate permission from user" +msgstr "Desasociar permiso de un usuario" + +#: client/src/forms/Credentials.js:385 client/src/helpers/Credentials.js:134 +#: client/src/helpers/Credentials.js:270 +msgid "Domain Name" +msgstr "Nombre de dominio" + +#: client/src/job-detail/job-detail.partial.html:420 +#: client/src/job-results/job-results.controller.js:8 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:114 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:137 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:102 +msgid "Download Output" +msgstr "Descargar salida" + +#: client/src/inventory-scripts/inventory-scripts.form.js:61 +msgid "" +"Drag and drop your custom inventory script file here or create one in the " +"field to import your custom inventory." +msgstr "" +"Arrastrar y soltar sus ficheros scripts personalizados de inventario aquí o " +"crear uno en el campo para importar su inventario personalizado." + +#: client/src/management-jobs/scheduler/main.js:95 +msgid "EDIT SCHEDULED JOB" +msgstr "MODIFICAR UN TRABAJO PLANIFICADO" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:46 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:66 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:59 +msgid "ELAPSED" +msgstr "TIEMPO TRANSCURRIDO" + +#: client/src/job-detail/job-detail.partial.html:391 +#: client/src/job-detail/job-detail.partial.html:394 +msgid "EVENT SUMMARY" +msgstr "RESUMEN DEL EVENTO" + +#: client/src/shared/smart-search/smart-search.partial.html:40 +msgid "EXAMPLES:" +msgstr "EJEMPLOS:" + +#: client/src/forms/Projects.js:174 +msgid "" +"Each time a job runs using this project, perform an update to the local " +"repository prior to starting the job." +msgstr "" +"Cada vez que un trabajo se ejecuta usando este proyecto, se realizará una " +"actualización al repositorio local antes de iniciar el trabajo." + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:62 +#: client/src/inventory-scripts/inventory-scripts.list.js:57 +#: client/src/lists/Credentials.js:72 client/src/lists/Inventories.js:78 +#: client/src/lists/Schedules.js:77 client/src/lists/Teams.js:60 +#: client/src/lists/Templates.js:107 client/src/lists/Users.js:62 +#: client/src/notifications/notificationTemplates.list.js:63 +#: client/src/notifications/notificationTemplates.list.js:72 +msgid "Edit" +msgstr "Editar" + +#: client/src/configuration/configuration.route.js:30 +msgid "Edit Configuration" +msgstr "Editar la configuración" + +#: client/src/forms/JobTemplates.js:482 client/src/forms/Workflows.js:180 +#: client/src/shared/form-generator.js:1723 +msgid "Edit Survey" +msgstr "Editar el cuestionario" + +#: client/src/setup-menu/setup-menu.partial.html:54 +msgid "Edit Tower's configuration." +msgstr "Editar la configuración de Tower." + +#: client/src/lists/Credentials.js:74 +msgid "Edit credential" +msgstr "Editar credenciales" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:65 +msgid "Edit host" +msgstr "Editar el servidor" + +#: client/src/lists/Inventories.js:80 +msgid "Edit inventory" +msgstr "Editar el inventario" + +#: client/src/inventory-scripts/inventory-scripts.list.js:59 +msgid "Edit inventory script" +msgstr "Editar el script de inventario" + +#: client/src/notifications/notificationTemplates.list.js:74 +msgid "Edit notification" +msgstr "Editar la notificación" + +#: client/src/lists/Schedules.js:80 +msgid "Edit schedule" +msgstr "Editar la programación" + +#: client/src/lists/Teams.js:64 +msgid "Edit team" +msgstr "Editar el equipo" + +#: client/src/lists/Templates.js:109 +msgid "Edit template" +msgstr "Editar la plantilla" + +#: client/src/workflow-results/workflow-results.partial.html:124 +msgid "Edit the User" +msgstr "Editar el usuario" + +#: client/src/lists/Projects.js:103 +msgid "Edit the project" +msgstr "Editar el proyecto" + +#: client/src/lists/ScheduledJobs.js:68 +msgid "Edit the schedule" +msgstr "Editar la planificación" + +#: client/src/lists/Users.js:66 +msgid "Edit user" +msgstr "Editar el usuario" + +#: client/src/controllers/Projects.js:238 +msgid "" +"Either you do not have access or the SCM update process completed. Click the " +"%sRefresh%s button to view the latest status." +msgstr "" +"Usted no tiene acceso o el proceso de actualización de SCM ha sido " +"completado. Pulse sobre el botón %Actualizar% para ver el estado más " +"reciente." + +#: client/src/forms/EventsViewer.js:81 client/src/forms/LogViewerStatus.js:50 +#: client/src/job-detail/job-detail.partial.html:210 +#: client/src/job-detail/job-detail.partial.html:268 +#: client/src/job-detail/job-detail.partial.html:86 +msgid "Elapsed" +msgstr "Tiempo transcurrido" + +#: client/src/forms/Credentials.js:192 client/src/forms/Users.js:42 +msgid "Email" +msgstr "Correo" + +#: client/src/forms/JobTemplates.js:316 client/src/forms/JobTemplates.js:321 +msgid "Enable Concurrent Jobs" +msgstr "Activar los trabajos concurrentes" + +#: client/src/forms/JobTemplates.js:292 +msgid "Enable Privilege Escalation" +msgstr "Activar la elevación de privilegios" + +#: client/src/forms/JobTemplates.js:307 +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 "" +"Habilitar la creación de una dirección URL para el uso de callback. " +"Utilizando esta URL un servidor puede contactar Tower y solicitar la " +"actualización de la configuración utilizando esta plantilla de trabajo." + +#: client/src/helpers/Credentials.js:414 +msgid "Encrypted credentials are not supported." +msgstr "Credenciales cifrados no están soportados." + +#: client/src/forms/EventsViewer.js:77 +msgid "End" +msgstr "Fin" + +#: client/src/license/license.partial.html:108 +msgid "End User License Agreement" +msgstr "Acuerdo de licencia de usuario final" + +#: 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 "" +"Introduzca variables del inventario usando sintaxis JSON o YAML. Utilice el " +"botón de selección para elegir entre los dos." + +#: client/src/helpers/Credentials.js:161 client/src/helpers/Credentials.js:297 +msgid "" +"Enter the URL for the virtual machine which %scorresponds to your CloudForm " +"instance. %sFor example, %s" +msgstr "" +"Introduzca la URL para la máquina virtual la cual %scorresponda a su " +"instancia CloudForm. %sPor ejemplo, %s" + +#: client/src/helpers/Credentials.js:151 client/src/helpers/Credentials.js:287 +msgid "" +"Enter the URL which corresponds to your %sRed Hat Satellite 6 server. %sFor " +"example, %s" +msgstr "" +"Introduzca la URL que corresponda a su servidor %sRed Hat Satellite 6. %sPor " +"ejemplo, %s" + +#: client/src/helpers/Credentials.js:129 client/src/helpers/Credentials.js:265 +msgid "" +"Enter the hostname or IP address which corresponds to your VMware vCenter." +msgstr "" +"Introduzca el nombre de servidor o dirección IP que corresponda a su VMWare " +"vCenter." + +#: client/src/configuration/configuration.controller.js:307 +#: client/src/configuration/configuration.controller.js:385 +#: client/src/configuration/configuration.controller.js:419 +#: client/src/configuration/configuration.controller.js:438 +#: client/src/controllers/Projects.js:173 +#: client/src/controllers/Projects.js:194 +#: client/src/controllers/Projects.js:222 +#: client/src/controllers/Projects.js:243 +#: client/src/controllers/Projects.js:258 +#: client/src/controllers/Projects.js:267 +#: client/src/controllers/Projects.js:405 +#: client/src/controllers/Projects.js:599 +#: client/src/controllers/Projects.js:665 +#: client/src/controllers/Projects.js:683 client/src/controllers/Users.js:182 +#: client/src/controllers/Users.js:271 client/src/controllers/Users.js:339 +#: client/src/controllers/Users.js:94 client/src/helpers/Credentials.js:418 +#: client/src/helpers/Credentials.js:434 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:168 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:187 +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:119 +#: client/src/management-jobs/card/card.controller.js:150 +#: client/src/management-jobs/card/card.controller.js:240 +#: client/src/management-jobs/card/card.controller.js:29 +msgid "Error!" +msgstr "¡Error!" + +#: client/src/forms/EventsViewer.js:21 client/src/forms/EventsViewer.js:25 +#: client/src/forms/EventsViewer.js:29 client/src/forms/EventsViewer.js:33 +#: client/src/forms/EventsViewer.js:37 client/src/forms/EventsViewer.js:42 +#: client/src/forms/EventsViewer.js:46 client/src/forms/EventsViewer.js:50 +#: client/src/forms/EventsViewer.js:54 client/src/forms/EventsViewer.js:58 +#: client/src/lists/JobEvents.js:65 client/src/lists/Streams.js:43 +msgid "Event" +msgstr "Evento" + +#: client/src/widgets/Stream.js:216 +msgid "Event summary not available" +msgstr "Resumen del evento no disponible." + +#: client/src/lists/JobEvents.js:31 +msgid "Events" +msgstr "Eventos" + +#: client/src/controllers/Projects.js:423 +#: client/src/controllers/Projects.js:706 +msgid "Example URLs for GIT SCM include:" +msgstr "Ejemplos de URLs para SCM GIT :" + +#: client/src/controllers/Projects.js:436 +#: client/src/controllers/Projects.js:718 +msgid "Example URLs for Mercurial SCM include:" +msgstr "Ejemplos de URLs para SCM Mercurial :" + +#: client/src/controllers/Projects.js:431 +#: client/src/controllers/Projects.js:713 +msgid "Example URLs for Subversion SCM include:" +msgstr "Ejemplos de URLs para SCM Subversion :" + +#: client/src/job-results/job-results.controller.js:11 +#: client/src/job-results/job-results.controller.js:207 +#: client/src/standard-out/standard-out.controller.js:235 +#: client/src/standard-out/standard-out.controller.js:25 +#: client/src/workflow-results/workflow-results.controller.js:138 +#: client/src/workflow-results/workflow-results.controller.js:97 +msgid "Expand Output" +msgstr "Extender salida" + +#: client/src/license/license.partial.html:39 +msgid "Expires On" +msgstr "Fecha de expiración el" + +#: client/src/job-detail/job-detail.partial.html:31 +msgid "Explanation" +msgstr "Explicación" + +#: client/src/forms/JobTemplates.js:367 client/src/forms/JobTemplates.js:379 +#: client/src/forms/Workflows.js:72 client/src/forms/Workflows.js:84 +#: client/src/job-detail/job-detail.partial.html:163 +#: client/src/partials/logviewer.html:8 +msgid "Extra Variables" +msgstr "Variables adicionales" + +#: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:67 +msgid "FAILED" +msgstr "FALLIDO" + +#: client/src/shared/smart-search/smart-search.partial.html:48 +msgid "FIELDS:" +msgstr "CAMPOS:" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:39 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:59 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:52 +msgid "FINISHED" +msgstr "FINALIZADO" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:80 +#: client/src/job-detail/job-detail.partial.html:198 +#: client/src/job-detail/job-detail.partial.html:257 +#: client/src/job-detail/job-detail.partial.html:341 +msgid "Failed" +msgstr "Fallido" + +#: client/src/dashboard/counts/dashboard-counts.directive.js:44 +msgid "Failed Hosts" +msgstr "Servidores fallidos" + +#: client/src/controllers/Users.js:182 +msgid "Failed to add new user. POST returned status:" +msgstr "Ha fallado la creación de nuevo usuario. POST ha devuelto el estado:" + +#: client/src/helpers/Credentials.js:419 +msgid "Failed to create new Credential. POST status:" +msgstr "Ha fallado la creación de un nuevo Credencial. Estado POST :" + +#: client/src/controllers/Projects.js:406 +msgid "Failed to create new project. POST returned status:" +msgstr "" +"Ha fallado la creación de un nuevo proyecto. POST ha devuelto el estado:" + +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:120 +msgid "Failed to get third-party login types. Returned status:" +msgstr "" +"Ha fallado la obtención de tipos de autenticación de terceros. Estado " +"devuelto:" + +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:188 +msgid "Failed to retrieve job template extra variables." +msgstr "" +"Ha fallado la obtención de variables adicionales para la plantilla de tarea." + +#: client/src/controllers/Projects.js:600 +msgid "Failed to retrieve project: %s. GET status:" +msgstr "Ha fallado la obtención del proyecto: %s. Estado GET :" + +#: client/src/controllers/Users.js:272 client/src/controllers/Users.js:340 +msgid "Failed to retrieve user: %s. GET status:" +msgstr "Ha fallado la obtención del usuario: %s. Estado GET :" + +#: client/src/configuration/configuration.controller.js:386 +msgid "Failed to save settings. Returned status:" +msgstr "Ha fallado guardar los ajustes. Estado devuelto:" + +#: client/src/configuration/configuration.controller.js:420 +msgid "Failed to save toggle settings. Returned status:" +msgstr "Ha fallado el guardado de los ajustes cambiados. Estado devuelto:" + +#: client/src/helpers/Credentials.js:435 +msgid "Failed to update Credential. PUT status:" +msgstr "Ha fallado la actualización de Credencial. Estado PUT :" + +#: client/src/controllers/Projects.js:665 +msgid "Failed to update project: %s. PUT status:" +msgstr "Ha fallado la actualización del proyecto: %s. Estado PUT :" + +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:169 +#: client/src/management-jobs/card/card.controller.js:151 +#: client/src/management-jobs/card/card.controller.js:241 +msgid "Failed updating job %s with variables. POST returned: %d" +msgstr "" +"Ha fallado la actualización del trabajo %s con variables. POST ha devuelto: " +"%d" + +#: client/src/helpers/Projects.js:73 +msgid "Failed. Click for details" +msgstr "Fallido. Pulse para obtener más información" + +#: client/src/notifications/notifications.list.js:48 +msgid "Failure" +msgstr "Fallo" + +#: client/src/lists/Schedules.js:50 +msgid "Final Run" +msgstr "Última ejecución" + +#: client/src/forms/LogViewerStatus.js:44 +#: client/src/job-detail/job-detail.partial.html:74 +#: client/src/lists/AllJobs.js:68 client/src/lists/CompletedJobs.js:56 +#: client/src/lists/PortalJobs.js:37 +msgid "Finished" +msgstr "Finalizado" + +#: client/src/access/rbac-multiselect/permissionsUsers.list.js:21 +#: client/src/forms/Users.js:28 client/src/lists/Users.js:35 +msgid "First Name" +msgstr "Nombre" + +#: client/src/lists/Schedules.js:40 +msgid "First Run" +msgstr "Primera ejecución" + +#: client/src/shared/smart-search/smart-search.partial.html:54 +msgid "" +"For additional information on advanced search search syntax please see the " +"Ansible Tower documentation." +msgstr "" +"Para obtener información adicional sobre la sintaxis de búsqueda avanzada, " +"por favor lea la documentación de Ansible Tower." + +#: client/src/helpers/Credentials.js:143 client/src/helpers/Credentials.js:279 +msgid "For example, %s" +msgstr "Por ejemplo, %s" + +#: client/src/notifications/notificationTemplates.form.js:101 +#: client/src/notifications/notificationTemplates.form.js:145 +#: client/src/notifications/notificationTemplates.form.js:162 +#: client/src/notifications/notificationTemplates.form.js:216 +#: client/src/notifications/notificationTemplates.form.js:337 +#: client/src/notifications/notificationTemplates.form.js:375 +msgid "For example:" +msgstr "Por ejemplo:" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +msgid "" +"For hosts that are part of an external inventory, this flag cannot be " +"changed. It will be set by the inventory sync process." +msgstr "" +"Para servidores que son parte de un inventario externo, este indicador de " +"estado no puede ser cambiado. Será establecido en el proceso de " +"sincronización del inventario." + +#: client/src/forms/JobTemplates.js:227 client/src/forms/WorkflowMaker.js:125 +msgid "" +"For more information and examples see %sthe Patterns topic at docs.ansible." +"com%s." +msgstr "" +"Para más información y ejemplos, observe el tema llamado %sPatterns en docs." +"ansible.com%s." + +#: client/src/forms/JobTemplates.js:203 client/src/forms/JobTemplates.js:216 +#: client/src/job-detail/job-detail.partial.html:138 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:87 +msgid "Forks" +msgstr "Forks" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:172 +msgid "Frequency Details" +msgstr "Información sobre la frecuencia" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:89 +msgid "GROUP" +msgstr "GRUPO" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:102 +msgid "GitHub" +msgstr "GitHub" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:103 +msgid "GitHub Org" +msgstr "GitHub Org" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:104 +msgid "GitHub Team" +msgstr "Equipo GitHub" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:105 +msgid "Google OAuth2" +msgstr "Google OAuth2" + +#: client/src/forms/Teams.js:156 client/src/forms/Users.js:213 +msgid "Grant Permission" +msgstr "Conceder permiso" + +#: client/src/setup-menu/setup-menu.partial.html:5 +msgid "" +"Group all of your content to manage permissions across departments in your " +"company." +msgstr "" +"Agrupar todo su contenido para administrar permisos a través de los " +"diferentes departamentos en su compañía." + +#: client/src/dashboard/hosts/main.js:55 +#: client/src/helpers/ActivityStream.js:53 +msgid "HOSTS" +msgstr "SERVIDORES" + +#: client/src/notifications/notificationTemplates.form.js:327 +msgid "HTTP Headers" +msgstr "Cabeceras HTTP" + +#: client/src/bread-crumb/bread-crumb.directive.js:111 +msgid "Hide Activity Stream" +msgstr "Ocultar flujo de actividad" + +#: client/src/forms/Credentials.js:140 client/src/forms/EventsViewer.js:20 +#: client/src/lists/JobEvents.js:73 +#: client/src/notifications/notificationTemplates.form.js:75 +msgid "Host" +msgstr "Servidor" + +#: client/src/helpers/Credentials.js:132 client/src/helpers/Credentials.js:268 +msgid "Host (Authentication URL)" +msgstr "Servidor (URL de autenticación)" + +#: client/src/forms/JobTemplates.js:341 client/src/forms/JobTemplates.js:350 +msgid "Host Config Key" +msgstr "Clave de configuración del servidor" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:54 +msgid "Host Enabled" +msgstr "Servidor habilitado" + +#: client/src/job-detail/job-detail.partial.html:269 +msgid "Host Status" +msgstr "Estado del servidor" + +#: client/src/lists/JobEvents.js:37 +msgid "Host Summary" +msgstr "Resumen del servidor" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:25 +#: client/src/dashboard/counts/dashboard-counts.directive.js:39 +#: client/src/job-detail/job-detail.partial.html:349 +msgid "Hosts" +msgstr "Servidores" + +#: client/src/license/license.partial.html:52 +msgid "Hosts Available" +msgstr "Servidores disponibles" + +#: client/src/license/license.partial.html:64 +msgid "Hosts Remaining" +msgstr "Servidores restantes" + +#: client/src/license/license.partial.html:58 +msgid "Hosts Used" +msgstr "Servidores utilizados" + +#: client/src/license/license.partial.html:116 +msgid "I agree to the End User License Agreement" +msgstr "Yo acepto el Acuerdo de licencia de usuario final." + +#: client/src/forms/EventsViewer.js:28 +msgid "ID" +msgstr "ID" + +#: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:12 +msgid "INITIATED BY" +msgstr "INICIALIZADO POR" + +#: client/src/helpers/ActivityStream.js:26 client/src/inventories/main.js:298 +#: client/src/main-menu/main-menu.partial.html:104 +#: client/src/main-menu/main-menu.partial.html:27 +#: client/src/organizations/linkout/organizations-linkout.route.js:143 +msgid "INVENTORIES" +msgstr "INVENTARIOS" + +#: client/src/inventory-scripts/inventory-scripts.form.js:23 +msgid "INVENTORY SCRIPT" +msgstr "SCRIPT DE INVENTARIO" + +#: client/src/helpers/ActivityStream.js:47 +#: client/src/inventory-scripts/main.js:66 +msgid "INVENTORY SCRIPTS" +msgstr "SCRIPTS DE INVENTARIO" + +#: client/src/notifications/notificationTemplates.form.js:360 +msgid "IRC Nick" +msgstr "Alias en IRC" + +#: client/src/notifications/notificationTemplates.form.js:349 +msgid "IRC Server Address" +msgstr "Dirección del servidor IRC" + +#: client/src/notifications/shared/type-change.service.js:58 +msgid "IRC Server Password" +msgstr "Contraseña del servidor IRC" + +#: client/src/notifications/shared/type-change.service.js:57 +msgid "IRC Server Port" +msgstr "Puerto del servidor IRC" + +#: client/src/shared/paginate/paginate.partial.html:43 +msgid "" +"ITEMS \n" +" {{dataRange}}\n" +" of {{dataCount()}}" +msgstr "ELEMENTO " + +#: client/src/login/authenticationServices/timer.factory.js:157 +msgid "Idle Session" +msgstr "Sesión inactiva" + +#: client/src/forms/JobTemplates.js:295 +msgid "" +"If enabled, run this playbook as an administrator. This is the equivalent of " +"passing the %s option to the %s command." +msgstr "" +"Si se habilita esta opción, ejecuta este playbook como administrador. Esto " +"es equivalente a pasar la opción %s al comando %s." + +#: client/src/forms/JobTemplates.js:319 +msgid "If enabled, simultaneous runs of this job template will be allowed." +msgstr "" +"Si se habilita esta opción, la ejecución de esta plantilla de trabajo en " +"paralelo será permitida." + +#: client/src/forms/Credentials.js:54 +msgid "" +"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 "" +"Si no se especifica ninguna organización, el credencial puede ser sólo " +"utilizado por el usuario que ha creado dicho credencial. Administradores de " +"organización y administradores de sistema pueden asignar una organización " +"para que los roles puedan permitir que los credenciales puedan ser asignados " +"a usuarios y equipos en esa organización" + +#: client/src/license/license.partial.html:70 +msgid "" +"If you are ready to upgrade, please contact us by clicking the button below" +msgstr "" +"Si usted está listo para la actualización, por favor contáctenos pulsando el " +"siguiente botón" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +msgid "" +"Indicates if a host is available and should be included in running jobs." +msgstr "" +"Indica si el servidor está disponible y debe ser incluído en trabajos en " +"ejecución." + +#: client/src/forms/ActivityDetail.js:33 client/src/lists/Streams.js:36 +msgid "Initiated by" +msgstr "Inicializado por" + +#: client/src/forms/JobTemplates.js:58 +msgid "" +"Instead, %s will check playbook syntax, test environment setup and report " +"problems." +msgstr "" +"En vez, %s comprobará el playbook, la sintaxis, configuración del entorno de " +"pruebas e informará de problemas." + +#: client/src/license/license.partial.html:11 +msgid "Invalid License" +msgstr "Licencia no valida" + +#: client/src/license/license.controller.js:69 +#: client/src/license/license.controller.js:76 +msgid "Invalid file format. Please upload valid JSON." +msgstr "Formato de fichero inválido. Por favor cargue un JSON válido." + +#: client/src/login/loginModal/loginModal.partial.html:34 +msgid "Invalid username and/or password. Please try again." +msgstr "Nombre de usuario o contraseña inválido. Por favor intente de nuevo." + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:116 +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:51 +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:26 +#: client/src/dashboard/counts/dashboard-counts.directive.js:50 +#: client/src/lists/Inventories.js:16 client/src/lists/Inventories.js:17 +msgid "Inventories" +msgstr "Inventarios" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:41 +#: client/src/forms/JobTemplates.js:73 client/src/forms/JobTemplates.js:87 +#: client/src/forms/WorkflowMaker.js:79 client/src/forms/WorkflowMaker.js:89 +#: client/src/job-detail/job-detail.partial.html:98 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:58 +msgid "Inventory" +msgstr "Inventario" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:27 +#: client/src/inventory-scripts/inventory-scripts.list.js:12 +#: client/src/setup-menu/setup-menu.partial.html:34 +msgid "Inventory Scripts" +msgstr "Scripts de inventario" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:46 +msgid "Inventory Sync" +msgstr "Sincronización de inventario" + +#: client/src/dashboard/counts/dashboard-counts.directive.js:55 +msgid "Inventory Sync Failures" +msgstr "Errores de sincronización de inventario" + +#: client/src/forms/Inventories.js:67 +msgid "Inventory Variables" +msgstr "Variables de inventario" + +#: client/src/forms/EventsViewer.js:49 +#: client/src/job-detail/job-detail.partial.html:350 +msgid "Item" +msgstr "Elemento" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:4 +msgid "JOB STATUS" +msgstr "ESTADO DEL TRABAJO" + +#: client/src/forms/JobTemplates.js:23 +msgid "JOB TEMPLATE" +msgstr "PLANTILLA DE TRABAJO" + +#: client/src/organizations/linkout/organizations-linkout.route.js:252 +msgid "JOB TEMPLATES" +msgstr "PLANTILLAS DE TRABAJO" + +#: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:113 +#: client/src/helpers/ActivityStream.js:44 client/src/jobs/jobs.route.js:15 +#: client/src/main-menu/main-menu.partial.html:122 +#: client/src/main-menu/main-menu.partial.html:43 +msgid "JOBS" +msgstr "TRABAJOS" + +#: client/src/lists/JobEvents.js:15 +msgid "Job Events" +msgstr "Eventos de trabajo" + +#: client/src/forms/JobTemplates.js:252 client/src/forms/JobTemplates.js:260 +#: client/src/forms/WorkflowMaker.js:134 client/src/forms/WorkflowMaker.js:142 +#: client/src/job-detail/job-detail.partial.html:153 +msgid "Job Tags" +msgstr "Etiquetas de trabajo" + +#: client/src/lists/Templates.js:65 +msgid "Job Template" +msgstr "Plantilla de trabajo" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:35 +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:97 +#: client/src/lists/PortalJobTemplates.js:15 +#: client/src/lists/PortalJobTemplates.js:16 +#: client/src/organizations/linkout/organizations-linkout.route.js:264 +msgid "Job Templates" +msgstr "Plantillas de trabajo" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:32 +#: client/src/forms/JobTemplates.js:48 client/src/forms/JobTemplates.js:62 +#: client/src/forms/WorkflowMaker.js:110 client/src/forms/WorkflowMaker.js:99 +#: client/src/job-detail/job-detail.partial.html:69 +msgid "Job Type" +msgstr "Tipo de trabajo" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:28 +#: client/src/configuration/configuration.partial.html:16 +#: client/src/jobs/jobs.partial.html:7 client/src/lists/PortalJobs.js:15 +#: client/src/lists/PortalJobs.js:19 +msgid "Jobs" +msgstr "Trabajos" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:90 +#: client/src/shared/smart-search/smart-search.partial.html:14 +msgid "Key" +msgstr "Clave" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:73 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:66 +msgid "LAUNCH TYPE" +msgstr "TIPO DE EJECUCIÓN" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:106 +msgid "LDAP" +msgstr "LDAP" + +#: client/src/license/license.route.js:18 +msgid "LICENSE" +msgstr "LICENCIA" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:45 +msgid "LICENSE ERROR" +msgstr "ERROR DE LICENCIA" + +#: client/src/main-menu/main-menu.partial.html:83 +msgid "LOG OUT" +msgstr "DESCONECTARSE" + +#: client/src/notifications/notificationTemplates.form.js:273 +msgid "Label to be shown with notification" +msgstr "Etiqueta a ser mostrada con la notificación" + +#: client/src/forms/JobTemplates.js:355 client/src/forms/JobTemplates.js:360 +#: client/src/forms/Workflows.js:60 client/src/forms/Workflows.js:65 +#: client/src/lists/AllJobs.js:76 client/src/lists/Templates.js:47 +msgid "Labels" +msgstr "Etiquetas" + +#: client/src/access/rbac-multiselect/permissionsUsers.list.js:25 +#: client/src/forms/Users.js:35 client/src/lists/Users.js:39 +msgid "Last Name" +msgstr "Apellido" + +#: client/src/lists/Projects.js:55 +msgid "Last Updated" +msgstr "Última actualización" + +#: client/src/lists/PortalJobTemplates.js:39 client/src/lists/Templates.js:84 +#: client/src/shared/form-generator.js:1715 +msgid "Launch" +msgstr "Ejecutar" + +#: client/src/management-jobs/card/card.partial.html:21 +msgid "Launch Management Job" +msgstr "Ejecutar trabajo de gestión" + +#: client/src/forms/LogViewerStatus.js:55 +msgid "Launch Type" +msgstr "Tipo de ejecución" + +#: client/src/job-detail/job-detail.partial.html:79 +#: client/src/job-detail/job-detail.partial.html:91 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:76 +msgid "Launched By" +msgstr "Ejecutado por" + +#: client/src/license/license.controller.js:42 +#: client/src/license/license.partial.html:8 +msgid "License" +msgstr "Licencia" + +#: client/src/forms/LogViewerStatus.js:33 +msgid "License Error" +msgstr "Error de licencia" + +#: client/src/license/license.partial.html:102 +msgid "License File" +msgstr "Fichero de licencia" + +#: client/src/license/license.partial.html:33 +msgid "License Key" +msgstr "Clave de licencia" + +#: client/src/license/license.controller.js:42 +msgid "License Management" +msgstr "Gestión de licencia" + +#: client/src/license/license.partial.html:21 +msgid "License Type" +msgstr "Tipo de licencia" + +#: client/src/forms/JobTemplates.js:222 client/src/forms/JobTemplates.js:229 +#: client/src/forms/WorkflowMaker.js:120 client/src/forms/WorkflowMaker.js:127 +#: client/src/job-detail/job-detail.partial.html:143 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:92 +msgid "Limit" +msgstr "Límite" + +#: client/src/shared/socket/socket.service.js:168 +msgid "Live events: attempting to connect to the Tower server." +msgstr "Eventos en directo: intentando conectar al servidor Tower." + +#: client/src/shared/socket/socket.service.js:172 +msgid "" +"Live events: connected. Pages containing job status information will " +"automatically update in real-time." +msgstr "" +"Eventos en directo: Páginas que contienen información del estado de un " +"trabajo serán actualizados automáticamente en tiempo real." + +#: client/src/shared/socket/socket.service.js:176 +msgid "Live events: error connecting to the Tower server." +msgstr "Eventos en directo: error conectando al servidor Tower." + +#: client/src/job-detail/job-detail.partial.html:316 +#: client/src/job-detail/job-detail.partial.html:371 +#: client/src/shared/form-generator.js:1991 +msgid "Loading..." +msgstr "Cargando..." + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:133 +msgid "Local Time Zone" +msgstr "Huso horario local" + +#: client/src/main-menu/main-menu.partial.html:188 +msgid "Log Out" +msgstr "Desconectarse" + +#: client/src/configuration/system-form/configuration-system.controller.js:82 +msgid "Logging" +msgstr "Iniciando sesión" + +#: client/src/management-jobs/card/card.route.js:21 +msgid "MANAGEMENT JOBS" +msgstr "TAREAS DE GESTIÓN" + +#: client/src/portal-mode/portal-mode.route.js:12 +msgid "MY VIEW" +msgstr "MI VISTA" + +#: client/src/forms/Credentials.js:68 +msgid "Machine" +msgstr "Máquina" + +#: client/src/forms/JobTemplates.js:139 +#: client/src/job-detail/job-detail.partial.html:117 +msgid "Machine Credential" +msgstr "Credenciales de máquina" + +#: client/src/setup-menu/setup-menu.partial.html:29 +msgid "" +"Manage the cleanup of old job history, activity streams, data marked for " +"deletion, and system tracking info." +msgstr "" +"Gestionar la limpieza del histórico de trabajos antiguos, flujos de " +"actividad, datos marcados para eliminación e información de sistema de " +"rastreo." + +#: client/src/helpers/Credentials.js:112 client/src/helpers/Credentials.js:248 +msgid "Management Certificate" +msgstr "Certificado de gestión" + +#: client/src/management-jobs/card/card.partial.html:4 +#: client/src/setup-menu/setup-menu.partial.html:28 +msgid "Management Jobs" +msgstr "Trabajos de gestión" + +#: client/src/controllers/Projects.js:93 +msgid "Manual projects do not require a schedule" +msgstr "Los proyectos manuales no necesitan de una planificación." + +#: client/src/controllers/Projects.js:589 +#: client/src/controllers/Projects.js:92 +msgid "Manual projects do not require an SCM update" +msgstr "Los proyectos manuales no necesitan una actualización del SCM" + +#: client/src/login/loginModal/loginModal.partial.html:28 +msgid "Maximum per-user sessions reached. Please sign in." +msgstr "" +"Máximo número de sesiones por usuario alcanzado. Por favor identifíquese." + +#: client/src/forms/EventsViewer.js:65 +#: client/src/job-detail/job-detail.partial.html:351 +msgid "Message" +msgstr "Mensaje" + +#: client/src/configuration/system-form/configuration-system.controller.js:80 +msgid "Misc. System" +msgstr "Miscelánea del sistema" + +#: client/src/helpers/Projects.js:76 +msgid "Missing. Click for details" +msgstr "Desaparecido. Pulse para obtener más información" + +#: client/src/forms/EventsViewer.js:53 +msgid "Module" +msgstr "Módulo" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:53 +msgid "Module Args" +msgstr "Argumentos del módulo" + +#: client/src/portal-mode/portal-mode-jobs.partial.html:4 +#: client/src/portal-mode/portal-mode-layout.partial.html:10 +msgid "My Jobs" +msgstr "Mis trabajos" + +#: client/src/main-menu/main-menu.partial.html:160 +msgid "My View" +msgstr "Mi vista" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:19 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:19 +msgid "NAME" +msgstr "NOMBRE" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:18 +msgid "NO HOSTS FOUND" +msgstr "NINGÚN SERVIDOR ENCONTRADO" + +#: client/src/login/loginModal/loginModal.partial.html:89 +msgid "NOTICE" +msgstr "AVISO" + +#: client/src/notifications/notificationTemplates.form.js:21 +msgid "NOTIFICATION TEMPLATE" +msgstr "PLANTILLA DE NOTIFICACIÓN" + +#: client/src/helpers/ActivityStream.js:38 +msgid "NOTIFICATION TEMPLATES" +msgstr "PLANTILLAS DE NOTIFICACIÓN" + +#: client/src/management-jobs/notifications/notification.route.js:46 +#: client/src/notifications/main.js:43 client/src/notifications/main.js:88 +msgid "NOTIFICATIONS" +msgstr "NOTIFICACIONES" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:14 +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:13 +#: client/src/forms/Credentials.js:34 client/src/forms/Inventories.js:29 +#: client/src/forms/JobTemplates.js:35 client/src/forms/LogViewerStatus.js:23 +#: client/src/forms/Organizations.js:26 client/src/forms/Projects.js:31 +#: client/src/forms/Teams.js:125 client/src/forms/Teams.js:27 +#: client/src/forms/Users.js:141 client/src/forms/Users.js:167 +#: client/src/forms/Users.js:193 client/src/forms/Workflows.js:34 +#: client/src/inventory-scripts/inventory-scripts.form.js:28 +#: client/src/inventory-scripts/inventory-scripts.list.js:20 +#: client/src/lists/AllJobs.js:45 client/src/lists/CompletedJobs.js:43 +#: client/src/lists/Credentials.js:29 client/src/lists/Inventories.js:46 +#: client/src/lists/PortalJobTemplates.js:24 client/src/lists/PortalJobs.js:32 +#: client/src/lists/Projects.js:38 client/src/lists/ScheduledJobs.js:33 +#: client/src/lists/Schedules.js:35 client/src/lists/Teams.js:25 +#: client/src/lists/Templates.js:26 +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:21 +#: client/src/notifications/notificationTemplates.form.js:32 +#: client/src/notifications/notificationTemplates.list.js:32 +#: client/src/notifications/notifications.list.js:26 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:19 +msgid "Name" +msgstr "Nombre" + +#: client/src/forms/Credentials.js:72 +msgid "Network" +msgstr "Red" + +#: client/src/forms/JobTemplates.js:186 client/src/forms/JobTemplates.js:197 +#: client/src/job-detail/job-detail.partial.html:131 +msgid "Network Credential" +msgstr "Credenciales de Red" + +#: client/src/forms/JobTemplates.js:196 +msgid "" +"Network credentials are used by Ansible networking modules to connect to and " +"manage networking devices." +msgstr "" +"Las credenciales de Red son utilizadas por los módulos de red de Ansible " +"para conectar y administrar dispositivos de red." + +#: client/src/inventory-scripts/inventory-scripts.form.js:16 +msgid "New Custom Inventory" +msgstr "Nuevo nombre del inventario personalizado" + +#: client/src/forms/Inventories.js:18 +msgid "New Inventory" +msgstr "Nuevo inventario" + +#: client/src/forms/JobTemplates.js:20 +msgid "New Job Template" +msgstr "Nueva plantilla de trabajo" + +#: client/src/notifications/notificationTemplates.form.js:16 +msgid "New Notification Template" +msgstr "Nueva plantilla de notificación" + +#: client/src/forms/Organizations.js:18 +msgid "New Organization" +msgstr "Nueva organización" + +#: client/src/forms/Projects.js:18 +msgid "New Project" +msgstr "Nuevo proyecto" + +#: client/src/forms/Teams.js:18 +msgid "New Team" +msgstr "Nuevo equipo" + +#: client/src/forms/Users.js:18 +msgid "New User" +msgstr "Nuevo usuario" + +#: client/src/forms/Workflows.js:19 +msgid "New Workflow Job Template" +msgstr "Nueva plantilla de flujo de trabajo" + +#: client/src/controllers/Users.js:174 +msgid "New user successfully created!" +msgstr "¡Nuevo usuario creado correctamente!" + +#: client/src/lists/ScheduledJobs.js:52 client/src/lists/Schedules.js:45 +msgid "Next Run" +msgstr "Siguiente ejecución" + +#: client/src/lists/Credentials.js:24 +msgid "No Credentials Have Been Created" +msgstr "Ningún credencial ha sido creado" + +#: client/src/controllers/Projects.js:163 +msgid "No SCM Configuration" +msgstr "Ninguna configuración SCM" + +#: client/src/helpers/Projects.js:58 +msgid "No SCM updates have run for this project" +msgstr "Ninguna actualización SCM ha sido ejecutada para este proyecto" + +#: client/src/access/rbac-multiselect/permissionsTeams.list.js:18 +msgid "No Teams exist" +msgstr "No existe ningún equipo" + +#: client/src/controllers/Projects.js:154 +msgid "No Updates Available" +msgstr "No existen actualizaciones disponibles" + +#: client/src/access/rbac-multiselect/permissionsUsers.list.js:18 +msgid "No Users exist" +msgstr "No existe ningún usuario" + +#: client/src/lists/CompletedJobs.js:22 +msgid "No completed jobs" +msgstr "No hay trabajos completados" + +#: client/src/license/license.controller.js:41 +msgid "No file selected." +msgstr "Ningún fichero seleccionado." + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:56 +msgid "No job templates were recently used." +msgstr "Ninguna plantilla de trabajo fue recientemente utilizada." + +#: client/src/lists/AllJobs.js:20 +msgid "No jobs have yet run." +msgstr "Ningún trabajo ha sido ejecutado todavía." + +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:46 +msgid "No jobs were recently run." +msgstr "Ningún trabajo ha sido recientemente ejecutado." + +#: client/src/job-detail/job-detail.partial.html:374 +msgid "No matching host events" +msgstr "Ningún evento de servidor encontrado" + +#: client/src/job-detail/job-detail.partial.html:307 +msgid "No matching hosts." +msgstr "Ningún servidor encontrado." + +#: client/src/job-detail/job-detail.partial.html:319 +msgid "No matching tasks" +msgstr "Ninguna tarea encontrada" + +#: client/src/forms/Teams.js:122 client/src/forms/Users.js:190 +msgid "No permissions have been granted" +msgstr "Ningún permiso concedido" + +#: client/src/notifications/notification-templates-list/list.controller.js:88 +msgid "No recent notifications." +msgstr "No hay notificaciones recientes" + +#: client/src/shared/form-generator.js:1885 +msgid "No records matched your search." +msgstr "No existe registros que coincidan con su búsqueda." + +#: client/src/lists/ScheduledJobs.js:18 +msgid "No schedules exist" +msgstr "No existen planificaciones" + +#: client/src/controllers/Users.js:16 +msgid "Normal User" +msgstr "Usuario normal" + +#: client/src/controllers/Projects.js:95 +msgid "Not configured for SCM" +msgstr "No configurado para SCM" + +#: client/src/notifications/notificationTemplates.form.js:296 +msgid "Notification Color" +msgstr "Color de notificación" + +#: client/src/notifications/notification-templates-list/list.controller.js:115 +msgid "Notification Failed." +msgstr "Notificación fallida" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:29 +#: client/src/notifications/notificationTemplates.list.js:14 +msgid "Notification Templates" +msgstr "Plantillas de notificación" + +#: client/src/management-jobs/notifications/notification.route.js:21 +#: client/src/notifications/notifications.list.js:17 +#: client/src/setup-menu/setup-menu.partial.html:41 +msgid "Notifications" +msgstr "Notificación" + +#: client/src/notifications/notificationTemplates.form.js:309 +msgid "Notify Channel" +msgstr "Notificar canal" + +#: client/src/notifications/notificationTemplates.form.js:201 +msgid "Number associated with the \"Messaging Service\" in Twilio." +msgstr "Número asociado con el \"Servicio de mensaje\" en Twilio.T" + +#: client/src/shared/form-generator.js:552 +msgid "OFF" +msgstr "OFF" + +#: client/src/shared/form-generator.js:550 +msgid "ON" +msgstr "ON" + +#: client/src/helpers/ActivityStream.js:41 +#: client/src/organizations/list/organizations-list.partial.html:6 +#: client/src/organizations/main.js:52 +msgid "ORGANIZATIONS" +msgstr "ORGANIZACIONES" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:112 +msgid "OVERWRITE" +msgstr "REEMPLAZAR" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:119 +msgid "OVERWRITE VARS" +msgstr "REEMPLAZAR VARS" + +#: client/src/forms/WorkflowMaker.js:45 +msgid "On Failure" +msgstr "En caso de error" + +#: client/src/forms/WorkflowMaker.js:40 +msgid "On Success" +msgstr "En caso de éxito" + +#: client/src/forms/Credentials.js:380 +msgid "" +"OpenStack domains define administrative boundaries. It is only needed for " +"Keystone v3 authentication URLs. Common scenarios include:" +msgstr "" +"Los dominios OpenStack definen los límites administrativos. Sólo es " +"necesario para las direcciones URLs en el uso de autentificación para " +"KeyStone v3. Los escenarios más habituales:" + +#: client/src/forms/JobTemplates.js:362 client/src/forms/Workflows.js:67 +msgid "" +"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 "" +"Etiquetas opcionales que describen esta plantilla de trabajo, como puede ser " +"'dev' o 'test'. Las etiquetas pueden ser utilizadas para agrupar o filtrar " +"plantillas de trabajo y trabajos completados en la vista en Tower." + +#: client/src/forms/JobTemplates.js:288 +#: client/src/notifications/notificationTemplates.form.js:395 +#: client/src/partials/logviewer.html:7 +msgid "Options" +msgstr "Opciones" + +#: client/src/forms/Credentials.js:48 client/src/forms/Credentials.js:55 +#: client/src/forms/Inventories.js:42 client/src/forms/Projects.js:43 +#: client/src/forms/Projects.js:49 client/src/forms/Teams.js:39 +#: client/src/forms/Users.js:59 client/src/forms/Workflows.js:47 +#: client/src/forms/Workflows.js:53 +#: client/src/inventory-scripts/inventory-scripts.form.js:40 +#: client/src/inventory-scripts/inventory-scripts.list.js:30 +#: client/src/lists/Inventories.js:52 client/src/lists/Teams.js:35 +#: client/src/notifications/notificationTemplates.form.js:44 +msgid "Organization" +msgstr "Organización" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:30 +#: client/src/forms/Users.js:131 +#: client/src/setup-menu/setup-menu.partial.html:4 +msgid "Organizations" +msgstr "Organizaciones" + +#: client/src/forms/Credentials.js:80 +msgid "Others (Cloud Providers)" +msgstr "Otros (Proveedores Cloud)" + +#: client/src/lists/Credentials.js:46 +msgid "Owners" +msgstr "Propietarios" + +#: client/src/login/loginModal/loginModal.partial.html:68 +msgid "PASSWORD" +msgstr "CONTRASEÑA" + +#: client/src/organizations/list/organizations-list.partial.html:45 +#: client/src/shared/form-generator.js:1891 +#: client/src/shared/list-generator/list-generator.factory.js:246 +msgid "PLEASE ADD ITEMS TO THIS LIST" +msgstr "Por favor añada elementos a la lista" + +#: client/src/main-menu/main-menu.partial.html:67 +msgid "PORTAL MODE" +msgstr "MODO PORTAL" + +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:73 +msgid "PROJECT" +msgstr "PROYECTO" + +#: client/src/app.js:296 client/src/helpers/ActivityStream.js:23 +#: client/src/main-menu/main-menu.partial.html:19 +#: client/src/main-menu/main-menu.partial.html:95 +#: client/src/organizations/linkout/organizations-linkout.route.js:194 +msgid "PROJECTS" +msgstr "PROYECTOS" + +#: client/src/shared/paginate/paginate.partial.html:33 +msgid "" +"Page\n" +" {{current}} of\n" +" {{last}}" +msgstr "Págin" + +#: client/src/notifications/notificationTemplates.form.js:240 +msgid "Pagerduty subdomain" +msgstr "Subdominio Pagerduty" + +#: client/src/forms/JobTemplates.js:373 client/src/forms/Workflows.js:78 +msgid "" +"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." +msgstr "" +"Transmitir variables adicionales en la línea de comandos a los playbook. " +"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja " +"de clave/valor utilizando la sintaxis YAML o JSON." + +#: client/src/forms/Credentials.js:227 client/src/forms/Users.js:70 +#: client/src/helpers/Credentials.js:120 client/src/helpers/Credentials.js:128 +#: client/src/helpers/Credentials.js:148 client/src/helpers/Credentials.js:158 +#: client/src/helpers/Credentials.js:168 client/src/helpers/Credentials.js:231 +#: client/src/helpers/Credentials.js:256 client/src/helpers/Credentials.js:264 +#: client/src/helpers/Credentials.js:284 client/src/helpers/Credentials.js:294 +#: client/src/helpers/Credentials.js:304 client/src/helpers/Credentials.js:45 +#: client/src/helpers/Credentials.js:95 +#: client/src/notifications/shared/type-change.service.js:28 +msgid "Password" +msgstr "Contraseña" + +#: client/src/helpers/Credentials.js:73 +msgid "Password (API Key)" +msgstr "Contraseña (clave API)" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:20 +msgid "Past 24 Hours" +msgstr "Últimas 24 horas" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:15 +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:26 +msgid "Past Month" +msgstr "Mes pasado" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:23 +msgid "Past Week" +msgstr "Semana pasada" + +#: client/src/helpers/Credentials.js:103 client/src/helpers/Credentials.js:239 +msgid "" +"Paste the contents of the PEM file associated with the service account email." +msgstr "" +"Pegue el contenido del fichero PEM asociado al correo de la cuenta de " +"servicio." + +#: client/src/helpers/Credentials.js:115 client/src/helpers/Credentials.js:251 +msgid "" +"Paste the contents of the PEM file that corresponds to the certificate you " +"uploaded in the Microsoft Azure console." +msgstr "" +"Pegue el contenido del fichero PEM que corresponde al certificado que usted " +"ha subido en la consola de Microsof Azure." + +#: client/src/helpers/Credentials.js:66 +msgid "Paste the contents of the SSH private key file." +msgstr "Pegue el contenido del fichero de la clave privada SSH." + +#: client/src/helpers/Credentials.js:41 +msgid "Paste the contents of the SSH private key file.%s or click to close%s" +msgstr "" +"Pegue el contenido del fichero de la clave privada SSH. %s o pulse cerrar%s" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:8 +msgid "Period" +msgstr "Periodo" + +#: client/src/controllers/Projects.js:326 client/src/controllers/Users.js:141 +#: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 +msgid "Permission Error" +msgstr "Error de permiso" + +#: client/src/forms/Credentials.js:440 client/src/forms/Inventories.js:96 +#: client/src/forms/JobTemplates.js:419 client/src/forms/Projects.js:228 +#: client/src/forms/Teams.js:118 client/src/forms/Users.js:186 +#: client/src/forms/Workflows.js:117 +msgid "Permissions" +msgstr "Permisos" + +#: client/src/forms/EventsViewer.js:40 +msgid "Play" +msgstr "Jugada" + +#: client/src/forms/JobTemplates.js:122 client/src/forms/JobTemplates.js:133 +#: client/src/job-detail/job-detail.partial.html:112 +msgid "Playbook" +msgstr "Playbook" + +#: client/src/forms/Projects.js:89 +msgid "Playbook Directory" +msgstr "Directorio de playbook" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:52 +msgid "Playbook Run" +msgstr "Ejecución de playbook" + +#: client/src/job-detail/job-detail.partial.html:208 +msgid "Plays" +msgstr "Jugadas" + +#: client/src/forms/Users.js:125 +msgid "Please add user to an Organization." +msgstr "Por favor añada un usuario a su organización." + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:89 +msgid "Please assign roles to the selected resources" +msgstr "Por favor asigne roles a los recursos seleccionados" + +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:62 +msgid "Please assign roles to the selected users/teams" +msgstr "Por favor asigne roles a los usuarios/equipos seleccionados" + +#: client/src/license/license.partial.html:84 +msgid "" +"Please click the button below to visit Ansible's website to get a Tower " +"license key." +msgstr "" +"Por favor pulse sobre el siguiente botón para visitar la página web de " +"Ansible para obtener una clave de licencia Tower." + +#: client/src/shared/form-generator.js:836 +#: client/src/shared/form-generator.js:950 +msgid "" +"Please enter a URL that begins with ssh, http or https. The URL may not " +"contain the '@' character." +msgstr "" +"Por favor introduzca una URL que inicie por ssh, http o https. La URL no " +"puede contener el caracter '@'." + +#: client/src/shared/form-generator.js:1188 +msgid "Please enter a number greater than %d and less than %d." +msgstr "Por favor introduzca un número mayor que %d y menor que %d." + +#: client/src/shared/form-generator.js:1190 +msgid "Please enter a number greater than %d." +msgstr "Por favor introduzca un número mayor que %d." + +#: client/src/shared/form-generator.js:1182 +msgid "Please enter a number." +msgstr "Por favor introduzca un número." + +#: client/src/login/loginModal/loginModal.partial.html:78 +msgid "Please enter a password." +msgstr "Por favor introduzca una contraseña." + +#: client/src/login/loginModal/loginModal.partial.html:58 +msgid "Please enter a username." +msgstr "Por favor introduzca un usuario." + +#: client/src/shared/form-generator.js:826 +#: client/src/shared/form-generator.js:940 +msgid "Please enter a valid email address." +msgstr "Por favor introduzca una dirección de correo válida." + +#: client/src/shared/form-generator.js:1042 +#: client/src/shared/form-generator.js:821 +#: client/src/shared/form-generator.js:935 +msgid "Please enter a value." +msgstr "Por favor introduzca un valor." + +#: client/src/lists/CompletedJobs.js:13 +msgid "Please save and run a job to view" +msgstr "Por favor guarde y ejecute un trabajo para ver" + +#: client/src/notifications/notifications.list.js:15 +msgid "Please save before adding notifications" +msgstr "Por favor guarde antes de añadir notificaciones" + +#: client/src/forms/Organizations.js:59 client/src/forms/Teams.js:70 +msgid "Please save before adding users" +msgstr "Por favor guarde antes de añadir usuarios" + +#: client/src/controllers/Credentials.js:160 +#: client/src/forms/Inventories.js:92 client/src/forms/JobTemplates.js:412 +#: client/src/forms/Projects.js:220 client/src/forms/Teams.js:114 +#: client/src/forms/Workflows.js:110 +msgid "Please save before assigning permissions" +msgstr "Por favor guarde antes de asignar permisos" + +#: client/src/forms/Users.js:123 client/src/forms/Users.js:182 +msgid "Please save before assigning to organizations" +msgstr "Por favor guarde antes de asignar a organizaciones" + +#: client/src/forms/Users.js:151 +msgid "Please save before assigning to teams" +msgstr "Por favor guarde antes de asignar a equipos" + +#: client/src/forms/Workflows.js:186 +msgid "Please save before defining the workflow graph" +msgstr "Por favor guarde antes de definir un gráfico de flujo de trabajo" + +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:26 +msgid "Please select Users / Teams from the lists below." +msgstr "Por favor seleccione Usuarios / Equipos de la siguiente lista." + +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:29 +msgid "Please select Users from the list below." +msgstr "Por favor seleccione Usuarios de la siguiente lista.." + +#: client/src/forms/WorkflowMaker.js:65 +msgid "Please select a Credential." +msgstr "Por favor seleccione un credencial." + +#: client/src/forms/JobTemplates.js:153 +msgid "" +"Please select a Machine Credential or check the Prompt on launch option." +msgstr "" +"Por favor seleccione un credencial de Máquina o seleccione la opción " +"Preguntar al ejecutar." + +#: client/src/shared/form-generator.js:1223 +msgid "Please select a number between" +msgstr "Por favor seleccione un número entre" + +#: client/src/shared/form-generator.js:1219 +msgid "Please select a number." +msgstr "Por favor seleccione un número." + +#: client/src/job-detail/job-detail.partial.html:245 +msgid "Please select a task below to view its associated hosts" +msgstr "" +"Por favor selecciona una tarea de las siguientes para ver sus servidores " +"asociados" + +#: client/src/shared/form-generator.js:1110 +#: client/src/shared/form-generator.js:1179 +#: client/src/shared/form-generator.js:1299 +#: client/src/shared/form-generator.js:1406 +msgid "Please select a value." +msgstr "Por favor seleccione un valor." + +#: client/src/forms/JobTemplates.js:84 +msgid "Please select an Inventory or check the Prompt on launch option." +msgstr "" +"Por favor seleccione un inventario o seleccione la opción Preguntar al " +"ejecutar." + +#: client/src/forms/WorkflowMaker.js:86 +msgid "Please select an Inventory." +msgstr "Por favor seleccione un Inventario." + +#: client/src/shared/form-generator.js:1216 +msgid "Please select at least one value." +msgstr "Por favor seleccione al menos un valor." + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:29 +msgid "Please select resources from the lists below." +msgstr "Por favor seleccione recursos de la lista siguiente." + +#: client/src/notifications/shared/type-change.service.js:27 +msgid "Port" +msgstr "Puerto" + +#: client/src/forms/Credentials.js:258 client/src/helpers/Credentials.js:36 +#: client/src/helpers/Credentials.js:60 +msgid "Private Key" +msgstr "Clave privada" + +#: client/src/forms/Credentials.js:265 +msgid "Private Key Passphrase" +msgstr "Frase de contraseña para la clave privada" + +#: client/src/forms/Credentials.js:280 client/src/forms/Credentials.js:284 +msgid "Privilege Escalation" +msgstr "Elevación de privilegios" + +#: client/src/helpers/Credentials.js:227 client/src/helpers/Credentials.js:91 +msgid "Privilege Escalation Password" +msgstr "Contraseña para la elevación de privilegios" + +#: client/src/helpers/Credentials.js:226 client/src/helpers/Credentials.js:90 +msgid "Privilege Escalation Username" +msgstr "Usuario para la elevación de privilegios" + +#: client/src/forms/JobTemplates.js:116 client/src/forms/JobTemplates.js:99 +#: client/src/helpers/Credentials.js:104 client/src/helpers/Credentials.js:240 +#: client/src/job-detail/job-detail.partial.html:105 +msgid "Project" +msgstr "Proyecto" + +#: client/src/helpers/Credentials.js:133 client/src/helpers/Credentials.js:269 +msgid "Project (Tenant Name)" +msgstr "Proyecto (Nombre del inquilino [Tenant])" + +#: client/src/forms/Projects.js:75 client/src/forms/Projects.js:83 +msgid "Project Base Path" +msgstr "Ruta base del proyecto" + +#: client/src/forms/Credentials.js:366 +msgid "Project Name" +msgstr "Nombre del proyecto" + +#: client/src/forms/Projects.js:100 +msgid "Project Path" +msgstr "Ruta del proyecto" + +#: client/src/dashboard/counts/dashboard-counts.directive.js:66 +msgid "Project Sync Failures" +msgstr "Errores de sincronización del proyecto" + +#: client/src/controllers/Projects.js:174 +msgid "Project lookup failed. GET returned:" +msgstr "La búsqueda del proyecto ha fallado. GET ha devuelto:" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:109 +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:46 +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:31 +#: client/src/dashboard/counts/dashboard-counts.directive.js:61 +#: client/src/lists/Projects.js:16 client/src/lists/Projects.js:17 +msgid "Projects" +msgstr "Proyectos" + +#: client/src/forms/JobTemplates.js:162 client/src/forms/JobTemplates.js:234 +#: client/src/forms/JobTemplates.js:265 client/src/forms/JobTemplates.js:283 +#: client/src/forms/JobTemplates.js:384 client/src/forms/JobTemplates.js:68 +#: client/src/forms/JobTemplates.js:94 +msgid "Prompt on launch" +msgstr "Preguntar al ejecutar" + +#: client/src/forms/JobTemplates.js:257 client/src/forms/JobTemplates.js:275 +#: client/src/forms/WorkflowMaker.js:139 client/src/forms/WorkflowMaker.js:154 +msgid "Provide a comma separated list of tags." +msgstr "Introduzca una lista de etiquetas separadas por coma." + +#: client/src/forms/JobTemplates.js:225 client/src/forms/WorkflowMaker.js:123 +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 " +"%s %s or %s" +msgstr "" +"Introduzca un patrón de servidores para restringir aún más la lista de " +"servidores que serán administrados o afectados por el playbook. Varios " +"patrones pueden ser separados por %s %s o %s" + +#: client/src/forms/JobTemplates.js:328 client/src/forms/JobTemplates.js:336 +msgid "Provisioning Callback URL" +msgstr "Dirección URL para las llamadas callback" + +#: client/src/helpers/Projects.js:63 +msgid "Queued. Click for details" +msgstr "En cola. Pulse para más información" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:107 +msgid "RADIUS" +msgstr "RADIUS" + +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:4 +msgid "RECENT JOB RUNS" +msgstr "TRABAJOS EJECUTADOS RECIENTEMENTE" + +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:42 +msgid "RECENTLY RUN JOBS" +msgstr "TRABAJOS EJECUTADOS RECIENTEMENTE" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:52 +msgid "RECENTLY USED JOB TEMPLATES" +msgstr "PLANTILLAS DE TRABAJO USADOS RECIENTEMENTE" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:4 +msgid "RECENTLY USED TEMPLATES" +msgstr "PLANTILLAS USADAS RECIENTEMENTE" + +#: client/src/jobs/jobs.partial.html:15 client/src/lists/JobEvents.js:89 +#: client/src/lists/Projects.js:70 client/src/lists/Schedules.js:63 +#: client/src/lists/Streams.js:57 +#: client/src/portal-mode/portal-mode-jobs.partial.html:12 +msgid "REFRESH" +msgstr "ACTUALIZAR" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:105 +msgid "REGIONS" +msgstr "REGIONES" + +#: client/src/shared/smart-search/smart-search.partial.html:51 +msgid "RELATED FIELDS:" +msgstr "CAMPOS RELACIONADOS:" + +#: client/src/shared/directives.js:136 +msgid "REMOVE" +msgstr "ELIMINAR" + +#: client/src/forms/JobTemplates.js:101 +msgid "RESET" +msgstr "REINICIALIZAR" + +#: client/src/job-detail/job-detail.partial.html:11 +#: client/src/job-detail/job-detail.partial.html:14 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:7 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:7 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:7 +msgid "RESULTS" +msgstr "RESULTADOS" + +#: client/src/helpers/Credentials.js:235 client/src/helpers/Credentials.js:99 +msgid "RSA Private Key" +msgstr "Clave privada RSA" + +#: client/src/inventories/manage/adhoc/adhoc.route.js:26 +msgid "RUN COMMAND" +msgstr "EJECUTAR COMANDO" + +#: client/src/workflow-results/workflow-results.partial.html:155 +msgid "Read only view of extra variables added to the workflow." +msgstr "" +"Vista de sólo lectura de las variables adicionales añadidas al flujo de " +"trabajo." + +#: client/src/notifications/notificationTemplates.list.js:26 +msgid "Recent Notifications" +msgstr "Notificaciones recientes" + +#: client/src/notifications/notificationTemplates.form.js:102 +#: client/src/notifications/notificationTemplates.form.js:97 +msgid "Recipient List" +msgstr "Lista de destinatarios" + +#: client/src/bread-crumb/bread-crumb.partial.html:6 +#: client/src/lists/Projects.js:66 client/src/lists/Schedules.js:59 +#: client/src/lists/Streams.js:54 +msgid "Refresh the page" +msgstr "Actualizar la página" + +#: client/src/lists/AllJobs.js:101 client/src/lists/CompletedJobs.js:75 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:11 +#: client/src/workflow-results/workflow-results.partial.html:29 +msgid "Relaunch using the same parameters" +msgstr "Relanzar utilizando los mismos parámetros" + +#: client/src/access/add-rbac-user-team/rbac-selected-list.directive.js:37 +#: client/src/forms/Teams.js:143 client/src/forms/Users.js:221 +msgid "Remove" +msgstr "Eliminar" + +#: client/src/forms/Projects.js:153 +msgid "Remove any local modifications prior to performing an update." +msgstr "" +"Eliminar cualquier modificación local antes de realizar una actualización." + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:149 +msgid "Repeat frequency" +msgstr "Frecuencia de repetición" + +#: client/src/license/license.partial.html:89 +msgid "Request License" +msgstr "Solicitar una licencia" + +#: client/src/shared/form-generator.js:681 +msgid "Reset" +msgstr "Reinicializar" + +#: client/src/forms/EventsViewer.js:62 client/src/forms/EventsViewer.js:66 +#: client/src/forms/EventsViewer.js:69 client/src/forms/EventsViewer.js:70 +msgid "Results" +msgstr "Resultados" + +#: client/src/job-detail/job-detail.partial.html:52 +msgid "Results Traceback" +msgstr "Resultados Traceback" + +#: client/src/forms/EventsViewer.js:61 +msgid "Return Code" +msgstr "Código devuelto" + +#: client/src/configuration/auth-form/sub-forms/auth-azure.form.js:46 +#: client/src/configuration/auth-form/sub-forms/auth-github-org.form.js:50 +#: client/src/configuration/auth-form/sub-forms/auth-github-team.form.js:50 +#: client/src/configuration/auth-form/sub-forms/auth-github.form.js:46 +#: client/src/configuration/auth-form/sub-forms/auth-google-oauth2.form.js:58 +#: client/src/configuration/auth-form/sub-forms/auth-ldap.form.js:88 +#: client/src/configuration/auth-form/sub-forms/auth-radius.form.js:33 +#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:82 +#: client/src/configuration/jobs-form/configuration-jobs.form.js:63 +#: client/src/configuration/system-form/sub-forms/system-activity-stream.form.js:25 +#: client/src/configuration/system-form/sub-forms/system-logging.form.js:52 +#: client/src/configuration/system-form/sub-forms/system-misc.form.js:29 +#: client/src/configuration/ui-form/configuration-ui.form.js:35 +msgid "Revert all to default" +msgstr "Revertir todo a valores por defecto" + +#: client/src/lists/Projects.js:49 +msgid "Revision" +msgstr "Revisión" + +#: client/src/controllers/Projects.js:699 +msgid "Revision #" +msgstr "Revisión n°" + +#: client/src/forms/Credentials.js:462 client/src/forms/EventsViewer.js:36 +#: client/src/forms/Inventories.js:121 client/src/forms/Organizations.js:88 +#: client/src/forms/Projects.js:250 client/src/forms/Teams.js:136 +#: client/src/forms/Teams.js:99 client/src/forms/Users.js:204 +#: client/src/forms/Workflows.js:141 +msgid "Role" +msgstr "Rol" + +#: client/src/helpers/Projects.js:67 +msgid "Running! Click for details" +msgstr "¡En ejecución!. Pulse para más detalles" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:108 +msgid "SAML" +msgstr "SAML" + +#: client/src/scheduler/main.js:314 +msgid "SCHEDULED" +msgstr "PROGRAMADO" + +#: client/src/helpers/ActivityStream.js:50 client/src/inventories/main.js:59 +#: client/src/management-jobs/scheduler/main.js:26 +#: client/src/scheduler/main.js:129 client/src/scheduler/main.js:219 +#: client/src/scheduler/main.js:36 +msgid "SCHEDULES" +msgstr "PROGRAMACIONES" + +#: client/src/controllers/Projects.js:699 +msgid "SCM Branch" +msgstr "Rama SCM" + +#: client/src/forms/Projects.js:154 +msgid "SCM Clean" +msgstr "Limpiar SCM" + +#: client/src/forms/Projects.js:130 +msgid "SCM Credential" +msgstr "Credencial SCM" + +#: client/src/forms/Projects.js:165 +msgid "SCM Delete" +msgstr "Eliminar SCM" + +#: client/src/helpers/Credentials.js:230 client/src/helpers/Credentials.js:94 +msgid "SCM Private Key" +msgstr "Clave privada SCM" + +#: client/src/forms/Projects.js:56 +msgid "SCM Type" +msgstr "Tipo SCM" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:49 +#: client/src/forms/Projects.js:175 +msgid "SCM Update" +msgstr "Actualizar SCM" + +#: client/src/controllers/Projects.js:218 +msgid "SCM Update Cancel" +msgstr "Cancelar actualización SCM" + +#: client/src/forms/Projects.js:145 +msgid "SCM Update Options" +msgstr "Opciones de actualización SCM" + +#: client/src/controllers/Projects.js:585 +#: client/src/controllers/Projects.js:88 +msgid "SCM update currently running" +msgstr "Actualización SCM actualmente en ejecución" + +#: client/src/main-menu/main-menu.partial.html:59 +#: client/src/setup-menu/setup.route.js:8 +msgid "SETTINGS" +msgstr "AJUSTES" + +#: client/src/login/loginModal/loginModal.partial.html:97 +msgid "SIGN IN" +msgstr "CONECTARSE" + +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.partial.html:2 +msgid "SIGN IN WITH" +msgstr "CONECTARSE CON" + +#: client/src/app.js:453 +msgid "SOCKETS" +msgstr "SOCKETS" + +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:98 +msgid "SOURCE" +msgstr "SOURCE" + +#: client/src/helpers/Credentials.js:169 client/src/helpers/Credentials.js:305 +msgid "SSH Key" +msgstr "Clave SSH" + +#: client/src/forms/Credentials.js:256 +msgid "SSH key description" +msgstr "Descripción de la clave SSH" + +#: client/src/notifications/notificationTemplates.form.js:388 +msgid "SSL Connection" +msgstr "Conexión SSL" + +#: client/src/job-detail/job-detail.partial.html:414 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:108 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:131 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:96 +msgid "STANDARD OUT" +msgstr "SALIDA ESTÁNDAR" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:32 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:52 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:45 +msgid "STARTED" +msgstr "INICIADO" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:24 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:37 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:37 +msgid "STATUS" +msgstr "ESTADO" + +#: client/src/forms/Credentials.js:120 client/src/forms/Credentials.js:128 +msgid "STS Token" +msgstr "Token STS" + +#: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:64 +msgid "SUCCESSFUL" +msgstr "CORRECTO" + +#: client/src/system-tracking/system-tracking.route.js:18 +msgid "SYSTEM TRACKING" +msgstr "SISTEMA DE RASTREO" + +#: client/src/helpers/Credentials.js:150 client/src/helpers/Credentials.js:286 +msgid "Satellite 6 URL" +msgstr "URL Satellite 6" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:176 +#: client/src/shared/form-generator.js:1699 +msgid "Save" +msgstr "Guardar" + +#: client/src/configuration/auth-form/configuration-auth.controller.js:81 +#: client/src/configuration/configuration.controller.js:192 +#: client/src/configuration/configuration.controller.js:251 +#: client/src/configuration/system-form/configuration-system.controller.js:60 +msgid "Save changes" +msgstr "Guardar los cambios" + +#: client/src/license/license.partial.html:122 +msgid "Save successful!" +msgstr "Guardado correctamente" + +#: client/src/lists/Templates.js:92 +msgid "Schedule" +msgstr "Planificar" + +#: client/src/management-jobs/card/card.partial.html:26 +msgid "Schedule Management Job" +msgstr "Planificar trabajo de gestión" + +#: client/src/controllers/Projects.js:80 +msgid "Schedule future SCM updates" +msgstr "Planificar futuras actualizaciones SCM" + +#: client/src/lists/Templates.js:95 +msgid "Schedule future job template runs" +msgstr "Planificar futuras ejecuciones de plantilla de trabajo." + +#: client/src/lists/ScheduledJobs.js:15 +msgid "Scheduled Jobs" +msgstr "Trabajos programados" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:32 +#: client/src/inventories/main.js:100 client/src/jobs/jobs.partial.html:10 +#: client/src/management-jobs/scheduler/main.js:32 +#: client/src/scheduler/main.js:167 client/src/scheduler/main.js:257 +#: client/src/scheduler/main.js:74 +msgid "Schedules" +msgstr "Programaciones" + +#: client/src/inventory-scripts/inventory-scripts.form.js:62 +msgid "Script must begin with a hashbang sequence: i.e.... %s" +msgstr "El script debe comenzar con la secuencia hashbang: p.e. ....%s" + +#: client/src/shared/smart-search/smart-search.controller.js:38 +#: client/src/shared/smart-search/smart-search.controller.js:83 +msgid "Search" +msgstr "Buscar" + +#: client/src/forms/Credentials.js:105 +msgid "Secret Key" +msgstr "Clave secreta" + +#: client/src/forms/Credentials.js:125 +msgid "" +"Security Token Service (STS) is a web service that enables you to request " +"temporary, limited-privilege credentials for AWS Identity and Access " +"Management (IAM) users." +msgstr "" +"El Security Token Service (STS) es un servicio web que habilita su solicitud " +"temporalmente y con credenciales con privilegio limitado para usuarios de " +"AWS Identity y Access Management (IAM)." + +#: client/src/shared/form-generator.js:1703 +msgid "Select" +msgstr "Seleccionar" + +#: client/src/access/add-rbac-user-team/rbac-user-team.controller.js:67 +msgid "Select a role" +msgstr "Seleccionar un rol" + +#: client/src/configuration/jobs-form/configuration-jobs.controller.js:90 +#: client/src/configuration/ui-form/configuration-ui.controller.js:85 +msgid "Select commands" +msgstr "Seleccionar comandos" + +#: client/src/forms/Projects.js:98 +msgid "" +"Select from the list of directories found in the Project Base Path. Together " +"the base path and the playbook directory provide the full path used to " +"locate playbooks." +msgstr "" +"Seleccione desde la lista de directorios encontrados en el directorio base " +"del proyecto. Junto al directorio base y el directorio del playbook se " +"construirá la ruta completa utilizada para encontrar playbooks." + +#: client/src/configuration/auth-form/configuration-auth.controller.js:230 +msgid "Select group types" +msgstr "Seleccionar un tipo de grupo" + +#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:25 +msgid "Select roles" +msgstr "Seleccionar roles" + +#: client/src/forms/JobTemplates.js:155 client/src/forms/WorkflowMaker.js:67 +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 "" +"Seleccione el credential que desea que el trabajo utilizará al conectarse a " +"servidores remotos. Escoja un credencial que contenga el usuario y la clave " +"SSH o la contraseña que Ansible necesitará para autentificarse dentro de los " +"sistema remotos" + +#: client/src/forms/JobTemplates.js:86 client/src/forms/WorkflowMaker.js:88 +msgid "Select the inventory containing the hosts you want this job to manage." +msgstr "" +"Seleccione el inventario que contenga los servidores que desea que este " +"trabajo administre." + +#: client/src/forms/JobTemplates.js:132 +msgid "Select the playbook to be executed by this job." +msgstr "Seleccionar el playbook a ser ejecutado por este trabajo." + +#: client/src/forms/JobTemplates.js:115 +msgid "" +"Select the project containing the playbook you want this job to execute." +msgstr "" +"Seleccionar el proyecto que contiene el playbook que desea ejecutar este " +"trabajo." + +#: client/src/configuration/system-form/configuration-system.controller.js:170 +msgid "Select types" +msgstr "Seleccionar los tipos" + +#: client/src/forms/JobTemplates.js:178 +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 "" +"La selección de un credencial opcional Cloud en la plantilla de trabajo " +"transmitirá los credenciales de acceso a los playbook en ejecución, " +"permitiendo el provisionado dentro del Cloud sin necesitar pasar los " +"parámetros manualmente a los módulos incluidos." + +#: client/src/notifications/notificationTemplates.form.js:86 +msgid "Sender Email" +msgstr "Dirección de correo del remitente" + +#: client/src/helpers/Credentials.js:234 client/src/helpers/Credentials.js:98 +msgid "Service Account Email Address" +msgstr "Dirección de correo de cuenta de servicio" + +#: client/src/forms/JobTemplates.js:60 client/src/forms/WorkflowMaker.js:108 +msgid "" +"Setting the type to %s will execute the playbook and store any scanned " +"facts for use with Tower's System Tracking feature." +msgstr "" +"La configuración del tipo para %s ejecutará el playbook y almacenará " +"cualquier fact para el uso del Sistema de rastreo." + +#: client/src/forms/JobTemplates.js:57 +msgid "Setting the type to %s will not execute the playbook." +msgstr "La configuración del tipo a %s no ejecutará el playbook." + +#: client/src/forms/WorkflowMaker.js:106 +msgid "" +"Setting the type to %s will not execute the playbook. Instead, %s will check " +"playbook syntax, test environment setup and report problems." +msgstr "" +"La configuración del tipo a %s no ejecutará el playbook. En cambio, %s " +"comprobará la sintaxis del playbook, la configuración del entorno de pruebas " +"e informará de problemas." + +#: client/src/main-menu/main-menu.partial.html:147 +msgid "Settings" +msgstr "Ajustes" + +#: client/src/shared/form-generator.js:851 +msgid "Show" +msgstr "Mostrar" + +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:34 +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:45 +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:56 +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:77 +msgid "Sign in with %s" +msgstr "Conectarse con %s" + +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:64 +msgid "Sign in with %s Organizations" +msgstr "Conectarse con las organizaciones %s" + +#: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:62 +msgid "Sign in with %s Teams" +msgstr "Conectarse con los equipos %s" + +#: client/src/forms/JobTemplates.js:270 client/src/forms/JobTemplates.js:278 +#: client/src/forms/WorkflowMaker.js:149 client/src/forms/WorkflowMaker.js:157 +#: client/src/job-detail/job-detail.partial.html:158 +msgid "Skip Tags" +msgstr "Omitir etiquetas" + +#: client/src/forms/JobTemplates.js:276 client/src/forms/WorkflowMaker.js:155 +msgid "" +"Skip tags are useful when you have a large playbook, and you want to skip " +"specific parts of a play or task." +msgstr "" +"Omitir etiquetas es útil cuando se posee de un playbook largo y desea omitir " +"algunas partes de una jugada o tarea." + +#: client/src/forms/Credentials.js:76 +msgid "Source Control" +msgstr "Fuente de control" + +#: client/src/forms/Projects.js:27 +msgid "Source Details" +msgstr "Detalles de la fuente" + +#: client/src/notifications/notificationTemplates.form.js:199 +msgid "Source Phone Number" +msgstr "Número de teléfono de la fuente" + +#: client/src/partials/logviewer.html:9 +msgid "Source Vars" +msgstr "Vars de la fuente" + +#: client/src/notifications/notificationTemplates.form.js:336 +msgid "Specify HTTP Headers in JSON format" +msgstr "Especificar las cabeceras HTTP en formato JSON" + +#: client/src/forms/Credentials.js:286 +msgid "" +"Specify a method for %s operations. This is equivalent to specifying the %s " +"parameter, where %s could be %s" +msgstr "" +"Especificar un método para las operaciones %s. Esto es equivalente a " +"especificar el parámetro %s, cuando %s puede ser %s." + +#: client/src/setup-menu/setup-menu.partial.html:17 +msgid "" +"Split up your organization to associate content and control permissions for " +"groups." +msgstr "" +"Dividir vuestra organización para asociar contenido y controlar permisos " +"para los grupos." + +#: client/src/partials/logviewer.html:5 +msgid "Standard Out" +msgstr "Salida estándar" + +#: client/src/forms/EventsViewer.js:73 +msgid "Start" +msgstr "Iniciar" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:41 +msgid "Start Date" +msgstr "Fecha de inicio" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:56 +msgid "Start Time" +msgstr "Hora de inicio" + +#: client/src/lists/PortalJobTemplates.js:42 client/src/lists/Templates.js:87 +msgid "Start a job using this template" +msgstr "Iniciar un trabajo usando esta plantilla" + +#: client/src/controllers/Projects.js:582 +#: client/src/controllers/Projects.js:79 +msgid "Start an SCM update" +msgstr "Iniciar una actualización de SCM" + +#: client/src/forms/LogViewerStatus.js:38 +#: client/src/job-detail/job-detail.partial.html:209 +#: client/src/job-detail/job-detail.partial.html:267 +#: client/src/job-detail/job-detail.partial.html:64 +msgid "Started" +msgstr "Iniciado" + +#: client/src/dashboard/hosts/dashboard-hosts.list.js:48 +#: client/src/forms/EventsViewer.js:24 client/src/forms/LogViewerStatus.js:28 +#: client/src/job-detail/job-detail.partial.html:26 +#: client/src/lists/JobEvents.js:51 +#: client/src/notifications/notification-templates-list/list.controller.js:73 +#: client/src/partials/logviewer.html:4 +msgid "Status" +msgstr "Estado" + +#: client/src/configuration/auth-form/configuration-auth.partial.html:3 +msgid "Sub Category" +msgstr "Subcategoría" + +#: client/src/license/license.partial.html:121 +msgid "Submit" +msgstr "Enviar" + +#: client/src/helpers/Jobs.js:230 +msgid "Submit the request to cancel?" +msgstr "¿Enviar la solicitud de cancelación?" + +#: client/src/license/license.partial.html:27 +msgid "Subscription" +msgstr "Subscripción" + +#: client/src/forms/Credentials.js:152 client/src/forms/Credentials.js:163 +msgid "Subscription ID" +msgstr "ID de suscripción" + +#: client/src/forms/Credentials.js:162 +msgid "Subscription ID is an Azure construct, which is mapped to a username." +msgstr "" +"El ID de subscripción es un elemento Azure, el cual está asociado al usuario." + +#: client/src/notifications/notifications.list.js:38 +msgid "Success" +msgstr "Correcto" + +#: client/src/helpers/Projects.js:70 +msgid "Success! Click for details" +msgstr "¡Correcto!. Pulse para más información." + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:77 +msgid "Successful" +msgstr "Correctamente" + +#: client/src/configuration/configuration.partial.html:17 +msgid "System" +msgstr "Sistema" + +#: client/src/controllers/Users.js:18 +msgid "System Administrator" +msgstr "Administrador de sistema" + +#: client/src/controllers/Users.js:17 +msgid "System Auditor" +msgstr "Auditor de sistema" + +#: client/src/configuration/configuration.partial.html:3 +msgid "System auditors have read-only permissions in this section." +msgstr "" +"Los auditores de sistema tienen permisos sólo de lectura en esta sección." + +#: client/src/app.js:344 client/src/helpers/ActivityStream.js:35 +#: client/src/organizations/linkout/organizations-linkout.route.js:97 +msgid "TEAMS" +msgstr "EQUIPOS" + +#: client/src/helpers/ActivityStream.js:56 +#: client/src/main-menu/main-menu.partial.html:113 +#: client/src/main-menu/main-menu.partial.html:35 +#: client/src/templates/list/templates-list.route.js:13 +msgid "TEMPLATES" +msgstr "PLANTILLAS" + +#: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:106 +msgid "TIME" +msgstr "DURACIÓN" + +#: client/src/forms/JobTemplates.js:258 client/src/forms/WorkflowMaker.js:140 +msgid "" +"Tags are useful when you have a large playbook, and you want to run a " +"specific part of a play or task." +msgstr "" +"Etiquetas son útiles cuando se tiene un playbook largo y se desea " +"especificar una parte específica de una jugada o tarea." + +#: client/src/notifications/notificationTemplates.form.js:316 +msgid "Target URL" +msgstr "URL destino" + +#: client/src/forms/EventsViewer.js:45 +msgid "Task" +msgstr "Tarea" + +#: client/src/job-detail/job-detail.partial.html:266 +msgid "Tasks" +msgstr "Tareas" + +#: client/src/forms/Credentials.js:468 client/src/forms/Inventories.js:127 +#: client/src/forms/Projects.js:256 client/src/forms/Workflows.js:147 +msgid "Team Roles" +msgstr "Roles de equipo" + +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:40 +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:33 +#: client/src/forms/Users.js:158 client/src/lists/Teams.js:16 +#: client/src/lists/Teams.js:17 +#: client/src/setup-menu/setup-menu.partial.html:16 +#: client/src/shared/stateDefinitions.factory.js:342 +msgid "Teams" +msgstr "Equipos" + +#: client/src/job-detail/job-detail.partial.html:57 +#: client/src/lists/Templates.js:16 +msgid "Template" +msgstr "Plantilla" + +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:34 +#: client/src/lists/Templates.js:17 client/src/lists/Templates.js:18 +msgid "Templates" +msgstr "Plantillas" + +#: client/src/forms/Credentials.js:338 +msgid "Tenant ID" +msgstr "ID inquilino [Tenant]" + +#: client/src/notifications/notificationTemplates.list.js:65 +msgid "Test notification" +msgstr "Probar notificación" + +#: client/src/shared/form-generator.js:1414 +#: client/src/shared/form-generator.js:1420 +msgid "That value was not found. Please enter or select a valid value." +msgstr "" +"El valor no fue encontrado. Por favor introduzca o seleccione un valor " +"válido." + +#: client/src/helpers/Credentials.js:106 client/src/helpers/Credentials.js:242 +msgid "" +"The Project ID is the GCE assigned identification. It is constructed as two " +"words followed by a three digit number. Such as:" +msgstr "" +"El ID del proyecto es el identificador asignado en GCE. Se construye de dos " +"palabras seguidas por tres dígitos. Ejemplo:" + +#: client/src/controllers/Projects.js:735 +msgid "The SCM update process is running." +msgstr "El proceso de actualización SCM está en ejecución." + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:70 +msgid "The credential used to run this command." +msgstr "El credencial utilizado para ejecutar este comando." + +#: client/src/forms/Credentials.js:191 +msgid "" +"The email address assigned to the Google Compute Engine %sservice account." +msgstr "" +"La dirección de correo asignada a la cuenta de servicio Google Compute " +"Engine %s." + +#: client/src/helpers/Credentials.js:142 client/src/helpers/Credentials.js:278 +msgid "The host to authenticate with." +msgstr "El servidor al que autentificarse." + +#: client/src/helpers/Credentials.js:75 +msgid "The host value" +msgstr "El valor del servidor" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:61 +msgid "The inventory this command ran on." +msgstr "El inventario en el cual este comando se ejecutará." + +#: client/src/forms/JobTemplates.js:212 +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 "" +"El número de procesos paralelos o simultáneos a utilizar cuando se ejecuta " +"los playbooks. 0 indica el valor por defecto desde el %sfichero de " +"configuración ansible%s." + +#: client/src/job-results/job-results.controller.js:554 +msgid "The output is too large to display. Please download." +msgstr "La salida es muy larga para ser mostrada. Por favor descárguela." + +#: client/src/helpers/Credentials.js:74 +msgid "The project value" +msgstr "El valor del proyecto" + +#: client/src/controllers/Projects.js:163 +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 "" +"El proyecto seleccionado no está configurado para usar SCM. Para configurar " +"el uso SCM, edita el proyecto y establezca opciones SCM y ejecute una " +"actualización." + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:124 +msgid "The time must be in HH24:MM:SS format." +msgstr "La hora debe ser en formato HH24:MM:SS" + +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:79 +msgid "The user who ran this command." +msgstr "El usuario que ejecuta este comando." + +#: client/src/lists/Streams.js:19 +msgid "There are no events to display at this time" +msgstr "No hay eventos a mostrar por el momento" + +#: client/src/lists/PortalJobTemplates.js:20 +msgid "There are no job templates to display at this time" +msgstr "No hay plantillas de trabajo a mostrar por el momento" + +#: client/src/lists/PortalJobs.js:20 +msgid "There are no jobs to display at this time" +msgstr "No hay trabajos a mostrar por el momento" + +#: client/src/controllers/Projects.js:154 +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 "" +"No hay información disponible de la actualización SCM disponible para este " +"proyecto. Una actualización no ha sido todavía completada." + +#: client/src/configuration/configuration.controller.js:308 +msgid "There was an error resetting value. Returned status:" +msgstr "Ha habido un error reiniciando el valor. Estado devuelto:" + +#: client/src/configuration/configuration.controller.js:439 +msgid "There was an error resetting values. Returned status:" +msgstr "Ha habido un error reiniciando valores. Estado devuelto:" + +#: client/src/management-jobs/scheduler/schedulerForm.partial.html:168 +msgid "This is not a valid number." +msgstr "Éste no es un número válido." + +#: client/src/helpers/Credentials.js:139 client/src/helpers/Credentials.js:275 +msgid "" +"This is the tenant name. This value is usually the same as the username." +msgstr "" +"Este es el nombre del inquilino [Tenant]. Este valor normalmente es el mismo " +"que el usuario." + +#: client/src/notifications/notifications.list.js:21 +msgid "" +"This list is populated by notification templates added from the " +"%sNotifications%s section" +msgstr "" +"La lista contiene las plantillas de notificación añadidas desde la sección " +"%sNotificaciones%s" + +#: client/src/notifications/notificationTemplates.form.js:202 +msgid "This must be of the form %s." +msgstr "Esto debe tener el formato %s" + +#: client/src/forms/Users.js:163 +msgid "This user is not a member of any teams" +msgstr "Este usuario no es miembro de ningún equipo." + +#: client/src/shared/form-generator.js:831 +#: client/src/shared/form-generator.js:945 +msgid "" +"This value does not match the password you entered previously. Please " +"confirm that password." +msgstr "" +"Este valor no corresponde con la contraseña introducida anteriormente. Por " +"favor confirme la contraseña." + +#: client/src/configuration/configuration.controller.js:464 +msgid "" +"This will reset all configuration values to their factory defaults. Are you " +"sure you want to proceed?" +msgstr "" +"Esta operación reiniciará todos los valores de configuración a los valores " +"por defecto de fábrica. ¿Está seguro de querer continuar?" + +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:14 +#: client/src/lists/Streams.js:28 +#: client/src/notifications/notification-templates-list/list.controller.js:74 +msgid "Time" +msgstr "Duración" + +#: client/src/license/license.partial.html:45 +msgid "Time Remaining" +msgstr "Tiempo restante" + +#: client/src/forms/Projects.js:191 +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 "" +"Tiempo en segundos a considerar que un proyecto es reciente. Durante la " +"ejecución del trabajo y callbacks la tarea del sistema evaluará la fecha y " +"hora de la última actualización del proyecto. Si es más antigua que el " +"tiempo de expiración de caché, se considera que no es reciente y una nueva " +"actualización del proyecto será llevada a cabo." + +#: client/src/forms/EventsViewer.js:74 client/src/forms/EventsViewer.js:78 +#: client/src/forms/EventsViewer.js:82 +msgid "Timing" +msgstr "Timing" + +#: client/src/forms/Credentials.js:126 +msgid "" +"To learn more about the IAM STS Token, refer to the %sAmazon documentation%s." +msgstr "" +"Para aprender más sobre el token de IAM STS, acuda a la documentación de " +"%sAmazon%s." + +#: client/src/job-detail/job-detail.partial.html:416 +msgid "Toggle Output" +msgstr "Conmutar salida" + +#: client/src/shared/form-generator.js:856 +msgid "Toggle the display of plaintext." +msgstr "Conmutar la visualización en texto plano." + +#: client/src/notifications/shared/type-change.service.js:34 +#: client/src/notifications/shared/type-change.service.js:40 +msgid "Token" +msgstr "Token" + +#: client/src/partials/logviewer.html:6 +msgid "Traceback" +msgstr "Traceback" + +#: client/src/forms/Credentials.js:61 client/src/forms/Credentials.js:85 +#: client/src/forms/Teams.js:131 client/src/forms/Users.js:199 +#: client/src/forms/WorkflowMaker.js:34 client/src/lists/AllJobs.js:61 +#: client/src/lists/CompletedJobs.js:50 client/src/lists/Credentials.js:39 +#: client/src/lists/Projects.js:43 client/src/lists/ScheduledJobs.js:44 +#: client/src/lists/Templates.js:31 +#: client/src/notifications/notificationTemplates.form.js:57 +#: client/src/notifications/notificationTemplates.list.js:37 +#: client/src/notifications/notifications.list.js:31 +msgid "Type" +msgstr "Tipo" + +#: client/src/forms/Credentials.js:25 +#: client/src/notifications/notificationTemplates.form.js:26 +msgid "Type Details" +msgstr "Detalles del tipo" + +#: client/src/notifications/notificationTemplates.form.js:100 +#: client/src/notifications/notificationTemplates.form.js:215 +msgid "Type an option on each line." +msgstr "Escriba una opción en cada línea" + +#: client/src/notifications/notificationTemplates.form.js:144 +#: client/src/notifications/notificationTemplates.form.js:161 +#: client/src/notifications/notificationTemplates.form.js:374 +msgid "Type an option on each line. The pound symbol (#) is not required." +msgstr "" +"Escriba una opción en cada línea. El símbolo almohadilla (#) no es necesario." + +#: client/src/controllers/Projects.js:444 +#: client/src/controllers/Projects.js:726 +msgid "URL popover text" +msgstr "Texto 'popover' de la URL" + +#: client/src/login/loginModal/loginModal.partial.html:49 +msgid "USERNAME" +msgstr "NOMBRE DE USUARIO" + +#: client/src/app.js:368 client/src/helpers/ActivityStream.js:32 +#: client/src/organizations/linkout/organizations-linkout.route.js:41 +msgid "USERS" +msgstr "USUARIOS" + +#: client/src/controllers/Projects.js:262 +msgid "Update Not Found" +msgstr "Actualización no encontrada" + +#: client/src/controllers/Projects.js:735 +msgid "Update in Progress" +msgstr "Actualización en curso" + +#: client/src/forms/Projects.js:172 +msgid "Update on Launch" +msgstr "Actualizar al ejecutar" + +#: client/src/license/license.partial.html:71 +msgid "Upgrade" +msgstr "Actualizar" + +#: client/src/notifications/notificationTemplates.form.js:408 +msgid "Use SSL" +msgstr "Utilizar SSL" + +#: client/src/notifications/notificationTemplates.form.js:403 +msgid "Use TLS" +msgstr "Utilizar TLS" + +#: 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 "" +"Utilizado para verificar y sincronizar los repositorios playbook con sistema " +"remoto de gestión de código fuente como Git, Subversion (svn) o Mercurial " +"(hg). Estos credenciales son utilizados por proyectos." + +#: client/src/forms/Credentials.js:457 client/src/forms/Inventories.js:116 +#: client/src/forms/Organizations.js:83 client/src/forms/Projects.js:245 +#: client/src/forms/Teams.js:94 client/src/forms/Workflows.js:136 +msgid "User" +msgstr "Usuario" + +#: client/src/configuration/configuration.partial.html:18 +msgid "User Interface" +msgstr "Interfaz de usuario" + +#: client/src/forms/Users.js:94 +msgid "User Type" +msgstr "Tipo de usuario" + +#: client/src/access/rbac-multiselect/permissionsUsers.list.js:30 +#: client/src/forms/Users.js:49 client/src/helpers/Credentials.js:118 +#: client/src/helpers/Credentials.js:225 client/src/helpers/Credentials.js:254 +#: client/src/helpers/Credentials.js:32 client/src/helpers/Credentials.js:56 +#: client/src/helpers/Credentials.js:89 client/src/lists/Users.js:31 +#: client/src/notifications/notificationTemplates.form.js:67 +msgid "Username" +msgstr "Usuario" + +#: 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 "" +"Usuarios, contraseñas y claves de acceso para la autenticación para el " +"proveedor de cloud o de infraestructura especificado. Éstos son utilizados " +"para fuentes de inventario dinámico y para el aprovisionamiento cloud y el " +"despliegue cuando se ejecuta un playbook." + +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:35 +#: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:35 +#: client/src/forms/Organizations.js:65 client/src/forms/Teams.js:76 +#: client/src/lists/Users.js:20 client/src/lists/Users.js:21 +#: client/src/setup-menu/setup-menu.partial.html:10 +msgid "Users" +msgstr "Usuarios" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:7 +#: client/src/dashboard/lists/jobs/jobs-list.partial.html:7 +msgid "VIEW ALL" +msgstr "VER TODO" + +#: client/src/main-menu/main-menu.partial.html:75 +msgid "VIEW DOCUMENTATION" +msgstr "VER DOCUMENTACIÓN" + +#: client/src/main-menu/main-menu.partial.html:51 +msgid "VIEW USER PAGE FOR {{ $root.current_user.username | uppercase }}" +msgstr "" +"MOSTRAR ṔAGINA DE USUARIO PARA {{ $root.current_user.username | uppercase }}" + +#: client/src/license/license.partial.html:10 +msgid "Valid License" +msgstr "Licencia válida" + +#: client/src/forms/Inventories.js:55 +msgid "Variables" +msgstr "Variables" + +#: client/src/forms/Credentials.js:392 +msgid "Vault Password" +msgstr "Contraseña Vault" + +#: client/src/forms/JobTemplates.js:239 client/src/forms/JobTemplates.js:246 +#: client/src/job-detail/job-detail.partial.html:148 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:99 +msgid "Verbosity" +msgstr "Nivel de detalle" + +#: client/src/about/about.controller.js:24 +#: client/src/license/license.partial.html:15 +msgid "Version" +msgstr "Versión" + +#: client/src/dashboard/graphs/dashboard-graphs.partial.html:58 +#: client/src/inventory-scripts/inventory-scripts.list.js:65 +#: client/src/lists/Credentials.js:81 client/src/lists/Inventories.js:85 +#: client/src/lists/JobEvents.js:98 client/src/lists/Schedules.js:85 +#: client/src/lists/Streams.js:66 client/src/lists/Teams.js:69 +#: client/src/lists/Templates.js:116 client/src/lists/Users.js:72 +#: client/src/notifications/notificationTemplates.list.js:80 +msgid "View" +msgstr "Mostrar" + +#: client/src/bread-crumb/bread-crumb.directive.js:111 +msgid "View Activity Stream" +msgstr "Mostrar el flujo de actividad" + +#: client/src/main-menu/main-menu.partial.html:173 +msgid "View Documentation" +msgstr "Mostrar la documentación" + +#: client/src/forms/Inventories.js:65 +msgid "View JSON examples at %s" +msgstr "Mostrar los ejemplos JSON en %s" + +#: client/src/forms/JobTemplates.js:466 client/src/forms/Workflows.js:164 +#: client/src/shared/form-generator.js:1727 +msgid "View Survey" +msgstr "Mostrar el cuestionario" + +#: client/src/forms/Inventories.js:66 +msgid "View YAML examples at %s" +msgstr "Mostrar los ejemplos YAML en %s" + +#: client/src/setup-menu/setup-menu.partial.html:47 +msgid "View Your License" +msgstr "Mostrar su licencia" + +#: client/src/setup-menu/setup-menu.partial.html:48 +msgid "View and edit your license information." +msgstr "Mostrar y editar su información de licencia." + +#: client/src/lists/Credentials.js:83 +msgid "View credential" +msgstr "Mostrar credencial" + +#: client/src/lists/JobEvents.js:100 client/src/lists/Streams.js:70 +msgid "View event details" +msgstr "Mostrar detalles del evento" + +#: client/src/setup-menu/setup-menu.partial.html:60 +msgid "View information about this version of Ansible Tower." +msgstr "Mostrar información sobre esta versión de Ansible Tower." + +#: client/src/lists/Inventories.js:87 +msgid "View inventory" +msgstr "Mostrar inventario" + +#: client/src/inventory-scripts/inventory-scripts.list.js:67 +msgid "View inventory script" +msgstr "Mostrar script de inventario" + +#: client/src/notifications/notificationTemplates.list.js:82 +msgid "View notification" +msgstr "Mostrar notificación" + +#: client/src/lists/Schedules.js:87 +msgid "View schedule" +msgstr "Mostrar el calendario" + +#: client/src/lists/Teams.js:72 +msgid "View team" +msgstr "Mostrar equipo" + +#: client/src/lists/Templates.js:118 +msgid "View template" +msgstr "Mostrar plantilla" + +#: client/src/lists/AllJobs.js:94 +msgid "View the job" +msgstr "Mostrar el trabajo" + +#: client/src/lists/Projects.js:109 +msgid "View the project" +msgstr "Mostrar el proyecto" + +#: client/src/lists/ScheduledJobs.js:75 +msgid "View the schedule" +msgstr "Mostrar el calendario" + +#: client/src/lists/Users.js:75 +msgid "View user" +msgstr "Mostrar usuario" + +#: client/src/lists/AllJobs.js:51 +#: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:25 +#: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:25 +msgid "View workflow results" +msgstr "Mostrar resultados del flujo de trabajo" + +#: client/src/forms/Workflows.js:22 +msgid "WORKFLOW" +msgstr "FLUJO DE TRABAJO" + +#: client/src/job-detail/job-detail.partial.html:313 +#: client/src/job-detail/job-detail.partial.html:368 +msgid "Waiting..." +msgstr "Esperando..." + +#: client/src/configuration/auth-form/configuration-auth.controller.js:68 +#: client/src/configuration/configuration.controller.js:179 +#: client/src/configuration/configuration.controller.js:241 +#: client/src/configuration/system-form/configuration-system.controller.js:47 +msgid "Warning: Unsaved Changes" +msgstr "Aviso: modificaciones no guardadas" + +#: client/src/login/loginModal/loginModal.partial.html:17 +msgid "Welcome to Ansible Tower!  Please sign in." +msgstr "¡Bienvenido a Ansible Tower!  Por favor conéctese." + +#: client/src/license/license.partial.html:78 +msgid "" +"Welcome to Ansible Tower! Please complete the steps below to acquire a " +"license." +msgstr "" +"¡Bienvenido a Ansible Tower! Por favor complete los siguientes pasos para " +"adquirir una licencia." + +#: client/src/forms/JobTemplates.js:55 client/src/forms/WorkflowMaker.js:104 +msgid "" +"When this template is submitted as a job, setting the type to %s will " +"execute the playbook, running tasks on the selected hosts." +msgstr "" +"Cuando una plantilla es lanzada como un trabajo, configurar el tipo a %s " +"ejecutará el playbook, ejecutará las tareas en los servidores seleccionados." + +#: client/src/forms/Workflows.js:188 client/src/shared/form-generator.js:1731 +msgid "Workflow Editor" +msgstr "Editor de flujo de trabajo" + +#: client/src/lists/Templates.js:70 +msgid "Workflow Job Template" +msgstr "Plantilla de trabajo para flujo de trabajo" + +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:103 +#: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:40 +msgid "Workflow Templates" +msgstr "Plantillas de flujo de trabajo" + +#: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:58 +msgid "" +"You can create a job template here." +msgstr "Usted puede crear una plantilla de trabajo aquí." +#: client/src/controllers/Projects.js:510 +msgid "You do not have access to view this property" +msgstr "Usted no tiene permiso para ver esta propiedad" + +#: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 +msgid "You do not have permission to add a job template." +msgstr "Usted no tiene permiso para añadir una plantilla de trabajo." + +#: client/src/controllers/Projects.js:326 +msgid "You do not have permission to add a project." +msgstr "Usted no tiene permiso para añadir un proyecto." + +#: client/src/controllers/Users.js:141 +msgid "You do not have permission to add a user." +msgstr "Usted no tiene permiso para añadir un usuario." + +#: client/src/configuration/auth-form/configuration-auth.controller.js:67 +#: client/src/configuration/configuration.controller.js:178 +#: client/src/configuration/configuration.controller.js:240 +#: client/src/configuration/system-form/configuration-system.controller.js:46 +msgid "" +"You have unsaved changes. Would you like to proceed without " +"saving?" +msgstr "" +"Usted tiene modificaciones sin guardar.¿Desea proceder sin " +"guardarlas?" + +#: client/src/shared/form-generator.js:957 +msgid "Your password must be %d characters long." +msgstr "Su password debe ser de longitud %d." + +#: client/src/shared/form-generator.js:962 +msgid "Your password must contain a lowercase letter." +msgstr "Su password debe contener al menos una letra minúscula." + +#: client/src/shared/form-generator.js:972 +msgid "Your password must contain a number." +msgstr "Su password debe contener un número." + +#: client/src/shared/form-generator.js:967 +msgid "Your password must contain an uppercase letter." +msgstr "Su password debe contener una letra mayúscula." + +#: client/src/shared/form-generator.js:977 +msgid "Your password must contain one of the following characters: %s" +msgstr "Su password debe contener uno de los siguientes caracteres: %s" + +#: client/src/controllers/Projects.js:218 +msgid "Your request to cancel the update was submitted to the task manager." +msgstr "" +"Su solicitud de cancelación de la actualización ha sido enviada al gestor de " +"tareas." + +#: client/src/login/loginModal/loginModal.partial.html:22 +msgid "Your session timed out due to inactivity. Please sign in." +msgstr "Su sesión ha expirado debido a inactividad. Por favor conéctese." + +#: client/src/shared/form-generator.js:1223 +msgid "and" +msgstr "y" + +#: client/src/access/rbac-multiselect/permissionsTeams.list.js:22 +msgid "name" +msgstr "nombre" + +#: client/src/access/rbac-multiselect/permissionsTeams.list.js:25 +msgid "organization" +msgstr "organización" + +#: client/src/forms/Credentials.js:139 client/src/forms/Credentials.js:365 +msgid "set in helpers/credentials" +msgstr "definir en helpers/credentials" + +#: client/src/forms/Credentials.js:382 +msgid "v2 URLs%s - leave blank" +msgstr "v2 URLs%s - dejad en blanco" + +#: client/src/forms/Credentials.js:383 +msgid "v3 default%s - set to 'default'" +msgstr "v3 default%s - establecer a 'default'" + +#: client/src/forms/Credentials.js:384 +msgid "v3 multi-domain%s - your domain name" +msgstr "v3 multi-domain%s - vuestro nombre de dominio" From 6b06e741e0f913640a4f7edabe2dbd0e42c199d7 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Mon, 10 Apr 2017 20:08:34 -0400 Subject: [PATCH 14/40] Update pot files Steps taken: $ make docker-compose-test Create /root/.config/zanata.ini (Obtained from https://translate.engineering.redhat.com/dashboard/settings/client) Update .pot files: $ make pot $ make languages Push to Zanata: python tools/scripts/manage_translations.py push --both --lang es --- awx/locale/django.pot | 868 ++++++++--------- awx/locale/en-us/LC_MESSAGES/django.po | 1195 +++++++++++++----------- awx/ui/po/ansible-tower-ui.pot | 1145 +++++++++++++---------- 3 files changed, 1713 insertions(+), 1495 deletions(-) diff --git a/awx/locale/django.pot b/awx/locale/django.pot index 9a47e8d755..223dcfd680 100644 --- a/awx/locale/django.pot +++ b/awx/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-09 14:32+0000\n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -66,7 +66,21 @@ msgstr "" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "" -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +msgid "Filtering on password fields is not allowed." +msgstr "" + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, python-format +msgid "Filtering on %s is not allowed." +msgstr "" + +#: awx/api/filters.py:347 +#, python-format +msgid "cannot order by field %s" +msgstr "" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "" @@ -111,306 +125,306 @@ msgstr "" msgid "JSON parse error - %s" msgstr "" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:254 msgid "Command" msgstr "" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "" -#: awx/api/serializers.py:257 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "" -#: awx/api/serializers.py:653 awx/api/serializers.py:711 awx/api/views.py:3842 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " "supported for sizes over %(supported_size)d bytes" msgstr "" -#: awx/api/serializers.py:726 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "" -#: awx/api/serializers.py:728 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "" -#: awx/api/serializers.py:752 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "" -#: awx/api/serializers.py:836 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "" -#: awx/api/serializers.py:997 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "" -#: awx/api/serializers.py:1001 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" -#: awx/api/serializers.py:1007 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "" -#: awx/api/serializers.py:1189 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "" -#: awx/api/serializers.py:1217 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "" -#: awx/api/serializers.py:1274 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "" -#: awx/api/serializers.py:1349 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" -#: awx/api/serializers.py:1402 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "" -#: awx/api/serializers.py:1406 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" -#: awx/api/serializers.py:1408 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "" -#: awx/api/serializers.py:1770 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1775 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1780 +#: awx/api/serializers.py:1779 msgid "" "Inherit permissions from organization roles. If provided on creation, do not " "give either user or team." msgstr "" -#: awx/api/serializers.py:1796 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "" -#: awx/api/serializers.py:1809 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -#: awx/api/serializers.py:1905 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "" -#: awx/api/serializers.py:1907 awx/api/serializers.py:1909 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "" -#: awx/api/serializers.py:1911 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "" -#: awx/api/serializers.py:1977 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:277 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "" -#: awx/api/serializers.py:1982 awx/main/models/jobs.py:280 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "" -#: awx/api/serializers.py:1989 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" -#: awx/api/serializers.py:2049 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "" -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "" -#: awx/api/serializers.py:2138 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "" -#: awx/api/serializers.py:2423 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" -#: awx/api/serializers.py:2428 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" -#: awx/api/serializers.py:2433 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "" -#: awx/api/serializers.py:2671 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "" -#: awx/api/serializers.py:2697 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "" -#: awx/api/serializers.py:2839 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" -#: awx/api/serializers.py:2862 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "" -#: awx/api/serializers.py:2867 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "" -#: awx/api/serializers.py:2870 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "" -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "" -#: awx/api/serializers.py:2925 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "" -#: awx/api/serializers.py:2947 +#: awx/api/serializers.py:2946 msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "" -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "" -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "" -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "" -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "" -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "" -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "" -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "" -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "" -#: awx/api/serializers.py:2969 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "" -#: awx/api/serializers.py:2973 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "" -#: awx/api/serializers.py:2977 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "" -#: awx/api/serializers.py:3012 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" msgstr "" -#: awx/api/serializers.py:3014 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " "associated or disassociated with object2." msgstr "" -#: awx/api/serializers.py:3017 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " "disassociate events this is the object type that object1 is being associated " "with." msgstr "" -#: awx/api/serializers.py:3020 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "" -#: awx/api/serializers.py:3123 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "" -#: awx/api/serializers.py:3125 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "" @@ -500,231 +514,231 @@ msgstr "" msgid "Schedule Jobs List" msgstr "" -#: awx/api/views.py:727 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "" -#: awx/api/views.py:952 awx/api/views.py:1311 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "" -#: awx/api/views.py:958 awx/api/views.py:4129 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "" -#: awx/api/views.py:962 awx/api/views.py:4143 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "" -#: awx/api/views.py:969 awx/api/views.py:4135 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" msgstr "" -#: awx/api/views.py:1059 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "" -#: awx/api/views.py:1088 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "" -#: awx/api/views.py:1192 awx/api/views.py:2285 awx/api/views.py:3298 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" -#: awx/api/views.py:1269 +#: awx/api/views.py:1272 msgid "Me" msgstr "" -#: awx/api/views.py:1315 awx/api/views.py:4084 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "" -#: awx/api/views.py:1321 awx/api/views.py:4088 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "" -#: awx/api/views.py:1326 awx/api/views.py:4093 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" msgstr "" -#: awx/api/views.py:1330 awx/api/views.py:4097 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "" -#: awx/api/views.py:1428 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "" -#: awx/api/views.py:1434 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "" -#: awx/api/views.py:1583 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "" -#: awx/api/views.py:1820 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "" -#: awx/api/views.py:2140 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "" -#: awx/api/views.py:2168 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "" -#: awx/api/views.py:2176 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "" -#: awx/api/views.py:2206 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -#: awx/api/views.py:2414 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "" -#: awx/api/views.py:2434 awx/api/views.py:2450 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "" -#: awx/api/views.py:2457 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "" -#: awx/api/views.py:2459 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "" -#: awx/api/views.py:2461 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "" -#: awx/api/views.py:2463 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "" -#: awx/api/views.py:2465 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "" -#: awx/api/views.py:2471 -#, python-format -msgid "Survey question %s is not a json object." -msgstr "" - -#: awx/api/views.py:2473 -#, python-format -msgid "'type' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2475 -#, python-format -msgid "'question_name' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2477 -#, python-format -msgid "'variable' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2479 -#, python-format -msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." -msgstr "" - #: awx/api/views.py:2484 #, python-format +msgid "Survey question %s is not a json object." +msgstr "" + +#: awx/api/views.py:2486 +#, python-format +msgid "'type' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2488 +#, python-format +msgid "'question_name' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2490 +#, python-format +msgid "'variable' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2492 +#, python-format +msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." +msgstr "" + +#: awx/api/views.py:2497 +#, python-format msgid "'required' missing from survey question %s." msgstr "" -#: awx/api/views.py:2569 +#: awx/api/views.py:2582 msgid "Maximum number of labels for {} reached." msgstr "" -#: awx/api/views.py:2698 +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "" -#: awx/api/views.py:2701 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "" -#: awx/api/views.py:2706 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" -#: awx/api/views.py:2713 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "" -#: awx/api/views.py:2726 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "" -#: awx/api/views.py:3055 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "" -#: awx/api/views.py:3197 awx/api/views.py:3745 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "" -#: awx/api/views.py:3229 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "" -#: awx/api/views.py:3421 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "" -#: awx/api/views.py:3468 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "" -#: awx/api/views.py:3477 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "" -#: awx/api/views.py:3486 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "" -#: awx/api/views.py:3699 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "" -#: awx/api/views.py:3897 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "" -#: awx/api/views.py:3910 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "" -#: awx/api/views.py:3955 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "" -#: awx/api/views.py:3962 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "" -#: awx/api/views.py:4078 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "" -#: awx/api/views.py:4121 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "" @@ -880,7 +894,7 @@ msgstr "" msgid "User" msgstr "" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "" @@ -948,25 +962,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:68 -#: awx/conf/tests/unit/test_settings.py:86 -#: awx/conf/tests/unit/test_settings.py:101 -#: awx/conf/tests/unit/test_settings.py:116 -#: awx/conf/tests/unit/test_settings.py:132 -#: awx/conf/tests/unit/test_settings.py:145 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:178 +#: awx/conf/tests/unit/test_settings.py:79 +#: awx/conf/tests/unit/test_settings.py:97 +#: awx/conf/tests/unit/test_settings.py:112 +#: awx/conf/tests/unit/test_settings.py:127 +#: awx/conf/tests/unit/test_settings.py:143 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 #: awx/conf/tests/unit/test_settings.py:189 -#: awx/conf/tests/unit/test_settings.py:205 -#: awx/conf/tests/unit/test_settings.py:226 -#: awx/conf/tests/unit/test_settings.py:249 -#: awx/conf/tests/unit/test_settings.py:263 -#: awx/conf/tests/unit/test_settings.py:287 -#: awx/conf/tests/unit/test_settings.py:307 -#: awx/conf/tests/unit/test_settings.py:324 -#: awx/conf/tests/unit/test_settings.py:337 -#: awx/conf/tests/unit/test_settings.py:351 -#: awx/conf/tests/unit/test_settings.py:387 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -1024,36 +1040,36 @@ msgstr "" msgid "Features not found in active license." msgstr "" -#: awx/main/access.py:525 awx/main/access.py:592 awx/main/access.py:717 -#: awx/main/access.py:987 awx/main/access.py:1222 awx/main/access.py:1619 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "" -#: awx/main/access.py:636 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "" -#: awx/main/access.py:653 awx/main/access.py:698 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "" -#: awx/main/access.py:686 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "" -#: awx/main/access.py:907 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "" -#: awx/main/access.py:920 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "" -#: awx/main/access.py:922 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "" -#: awx/main/access.py:1692 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1148,174 +1164,176 @@ msgstr "" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "" -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." msgstr "" -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "" -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "" -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "" -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" "Whitelist of paths that would otherwise be hidden to expose to isolated jobs." msgstr "" -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "" -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." msgstr "" -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." msgstr "" -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " "override this." msgstr "" -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "" -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "" -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:275 awx/main/conf.py:290 -#: awx/main/conf.py:302 awx/main/conf.py:311 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "" -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "" -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:273 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "" -#: awx/main/conf.py:274 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:283 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "" -#: awx/main/conf.py:284 +#: awx/main/conf.py:289 msgid "" "List of loggers that will send HTTP logs to the collector, these can include " "any or all of: \n" @@ -1325,11 +1343,11 @@ msgid "" "system_tracking - facts gathered from scan jobs." msgstr "" -#: awx/main/conf.py:297 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "" -#: awx/main/conf.py:298 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " "orother item found in a scan, allowing for greater search query granularity. " @@ -1337,14 +1355,22 @@ msgid "" "efficiency in fact processing." msgstr "" -#: awx/main/conf.py:309 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "" -#: awx/main/conf.py:310 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "" +#: awx/main/conf.py:323 +msgid "Cluster-wide Tower unique identifier." +msgstr "" + +#: awx/main/conf.py:324 +msgid "Useful to uniquely identify Tower instances." +msgstr "" + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "" @@ -1387,43 +1413,43 @@ msgstr "" msgid "No argument passed to %s module." msgstr "" -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:752 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:753 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:756 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:755 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:783 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:784 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:785 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:786 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:787 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:788 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "" @@ -1490,31 +1516,31 @@ msgstr "" msgid "Rackspace" msgstr "" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "" @@ -1702,7 +1728,11 @@ msgstr "" msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "" @@ -1720,237 +1750,237 @@ msgid "" "host." msgstr "" -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "" -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "" -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "" -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "" -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "" -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "" -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "" -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." msgstr "" -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "" -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:411 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "" -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." msgstr "" -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "" -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." msgstr "" -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "" @@ -1972,125 +2002,125 @@ msgstr "" msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:370 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "" -#: awx/main/models/jobs.py:373 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" -#: awx/main/models/jobs.py:439 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -#: awx/main/models/jobs.py:448 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -#: awx/main/models/jobs.py:651 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "" -#: awx/main/models/jobs.py:754 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "" -#: awx/main/models/jobs.py:757 awx/main/models/jobs.py:771 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "" -#: awx/main/models/jobs.py:758 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "" -#: awx/main/models/jobs.py:759 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "" -#: awx/main/models/jobs.py:760 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "" -#: awx/main/models/jobs.py:761 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "" -#: awx/main/models/jobs.py:762 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "" -#: awx/main/models/jobs.py:763 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "" -#: awx/main/models/jobs.py:764 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "" -#: awx/main/models/jobs.py:766 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "" -#: awx/main/models/jobs.py:767 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "" -#: awx/main/models/jobs.py:769 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "" -#: awx/main/models/jobs.py:770 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "" -#: awx/main/models/jobs.py:779 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "" -#: awx/main/models/jobs.py:1189 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1190 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1191 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" @@ -2158,11 +2188,11 @@ msgstr "" msgid "Invalid token" msgstr "" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "" -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "" @@ -2178,83 +2208,87 @@ msgstr "" msgid "Subversion" msgstr "" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +msgid "Red Hat Insights" +msgstr "" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." msgstr "" -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "" -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "" -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "" -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "" -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "" -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "" -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "" -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "" -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." msgstr "" -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "" -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "" @@ -2413,47 +2447,47 @@ msgstr "" msgid "Updating" msgstr "" -#: awx/main/models/unified_jobs.py:412 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "" -#: awx/main/models/unified_jobs.py:413 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "" -#: awx/main/models/unified_jobs.py:414 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "" -#: awx/main/models/unified_jobs.py:415 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "" -#: awx/main/models/unified_jobs.py:416 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "" -#: awx/main/models/unified_jobs.py:417 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "" -#: awx/main/models/unified_jobs.py:463 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "" -#: awx/main/models/unified_jobs.py:489 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "" -#: awx/main/models/unified_jobs.py:495 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "" -#: awx/main/models/unified_jobs.py:501 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "" -#: awx/main/models/unified_jobs.py:523 +#: awx/main/models/unified_jobs.py:526 msgid "" "A status field to indicate the state of the job if it wasn't able to run and " "capture stdout" @@ -2466,11 +2500,11 @@ msgid "" "\n" msgstr "" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "" @@ -2509,55 +2543,55 @@ msgid "" "resource such as project or inventory" msgstr "" -#: awx/main/tasks.py:180 +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "" -#: awx/main/utils/common.py:245 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:264 -#: awx/main/utils/common.py:283 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "" -#: awx/main/utils/common.py:254 awx/main/utils/common.py:292 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "" -#: awx/main/utils/common.py:296 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "" -#: awx/main/utils/common.py:314 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "" -#: awx/main/utils/common.py:320 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "" @@ -2668,195 +2702,195 @@ msgstr "" msgid "A server error has occurred." msgstr "" -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:632 msgid "London" msgstr "" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "" -#: awx/settings/defaults.py:630 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "" -#: awx/settings/defaults.py:672 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "" -#: awx/settings/defaults.py:733 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "" -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "" -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "" -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "" -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "" -#: awx/settings/defaults.py:769 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "" @@ -3110,8 +3144,8 @@ msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" #: awx/sso/conf.py:395 diff --git a/awx/locale/en-us/LC_MESSAGES/django.po b/awx/locale/en-us/LC_MESSAGES/django.po index 56771e6f92..223dcfd680 100644 --- a/awx/locale/en-us/LC_MESSAGES/django.po +++ b/awx/locale/en-us/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-31 20:58+0000\n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -66,43 +66,57 @@ msgstr "" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "" -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +msgid "Filtering on password fields is not allowed." +msgstr "" + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, python-format +msgid "Filtering on %s is not allowed." +msgstr "" + +#: awx/api/filters.py:347 +#, python-format +msgid "cannot order by field %s" +msgstr "" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "" -#: awx/api/metadata.py:50 +#: awx/api/metadata.py:51 msgid "Database ID for this {}." msgstr "" -#: awx/api/metadata.py:51 +#: awx/api/metadata.py:52 msgid "Name of this {}." msgstr "" -#: awx/api/metadata.py:52 +#: awx/api/metadata.py:53 msgid "Optional description of this {}." msgstr "" -#: awx/api/metadata.py:53 +#: awx/api/metadata.py:54 msgid "Data type for this {}." msgstr "" -#: awx/api/metadata.py:54 +#: awx/api/metadata.py:55 msgid "URL for this {}." msgstr "" -#: awx/api/metadata.py:55 +#: awx/api/metadata.py:56 msgid "Data structure with URLs of related resources." msgstr "" -#: awx/api/metadata.py:56 +#: awx/api/metadata.py:57 msgid "Data structure with name/description for related resources." msgstr "" -#: awx/api/metadata.py:57 +#: awx/api/metadata.py:58 msgid "Timestamp when this {} was created." msgstr "" -#: awx/api/metadata.py:58 +#: awx/api/metadata.py:59 msgid "Timestamp when this {} was last modified." msgstr "" @@ -111,616 +125,620 @@ msgstr "" msgid "JSON parse error - %s" msgstr "" -#: awx/api/serializers.py:250 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:254 msgid "Command" msgstr "" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "" -#: awx/api/serializers.py:658 awx/api/serializers.py:716 awx/api/views.py:3819 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " "supported for sizes over %(supported_size)d bytes" msgstr "" -#: awx/api/serializers.py:731 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "" -#: awx/api/serializers.py:733 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "" -#: awx/api/serializers.py:757 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "" -#: awx/api/serializers.py:841 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "" -#: awx/api/serializers.py:1002 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "" -#: awx/api/serializers.py:1006 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" -#: awx/api/serializers.py:1012 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "" -#: awx/api/serializers.py:1194 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "" -#: awx/api/serializers.py:1222 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "" -#: awx/api/serializers.py:1279 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "" -#: awx/api/serializers.py:1354 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" -#: awx/api/serializers.py:1407 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "" -#: awx/api/serializers.py:1411 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" -#: awx/api/serializers.py:1413 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "" -#: awx/api/serializers.py:1772 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1777 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1782 +#: awx/api/serializers.py:1779 msgid "" "Inherit permissions from organization roles. If provided on creation, do not " "give either user or team." msgstr "" -#: awx/api/serializers.py:1798 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "" -#: awx/api/serializers.py:1811 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -#: awx/api/serializers.py:1903 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "" -#: awx/api/serializers.py:1905 awx/api/serializers.py:1907 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "" -#: awx/api/serializers.py:1909 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "" -#: awx/api/serializers.py:1975 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" -#: awx/api/serializers.py:1978 awx/main/models/jobs.py:278 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "" -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:281 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "" -#: awx/api/serializers.py:1987 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" -#: awx/api/serializers.py:2047 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "" -#: awx/api/serializers.py:2132 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "" -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "" -#: awx/api/serializers.py:2421 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" -#: awx/api/serializers.py:2426 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" -#: awx/api/serializers.py:2431 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "" -#: awx/api/serializers.py:2669 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "" -#: awx/api/serializers.py:2695 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "" -#: awx/api/serializers.py:2837 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" -#: awx/api/serializers.py:2860 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "" -#: awx/api/serializers.py:2865 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "" -#: awx/api/serializers.py:2868 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "" -#: awx/api/serializers.py:2921 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "" -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "" -#: awx/api/serializers.py:2945 +#: awx/api/serializers.py:2946 msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -#: awx/api/serializers.py:2947 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "" -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "" -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "" -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "" -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "" -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "" -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "" -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "" -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "" -#: awx/api/serializers.py:2971 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "" -#: awx/api/serializers.py:2975 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "" -#: awx/api/serializers.py:2997 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" msgstr "" -#: awx/api/serializers.py:2999 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " "associated or disassociated with object2." msgstr "" -#: awx/api/serializers.py:3002 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " "disassociate events this is the object type that object1 is being associated " "with." msgstr "" -#: awx/api/serializers.py:3005 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "" -#: awx/api/serializers.py:3112 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "" -#: awx/api/serializers.py:3114 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "" -#: awx/api/views.py:101 +#: awx/api/views.py:102 msgid "Your license does not allow use of the activity stream." msgstr "" -#: awx/api/views.py:111 +#: awx/api/views.py:112 msgid "Your license does not permit use of system tracking." msgstr "" -#: awx/api/views.py:121 +#: awx/api/views.py:122 msgid "Your license does not allow use of workflows." msgstr "" -#: awx/api/views.py:129 awx/templates/rest_framework/api.html:28 +#: awx/api/views.py:130 awx/templates/rest_framework/api.html:28 msgid "REST API" msgstr "" -#: awx/api/views.py:136 awx/templates/rest_framework/api.html:4 +#: awx/api/views.py:137 awx/templates/rest_framework/api.html:4 msgid "Ansible Tower REST API" msgstr "" -#: awx/api/views.py:152 +#: awx/api/views.py:153 msgid "Version 1" msgstr "" -#: awx/api/views.py:203 +#: awx/api/views.py:204 msgid "Ping" msgstr "" -#: awx/api/views.py:232 awx/conf/apps.py:12 +#: awx/api/views.py:233 awx/conf/apps.py:12 msgid "Configuration" msgstr "" -#: awx/api/views.py:285 +#: awx/api/views.py:286 msgid "Invalid license data" msgstr "" -#: awx/api/views.py:287 +#: awx/api/views.py:288 msgid "Missing 'eula_accepted' property" msgstr "" -#: awx/api/views.py:291 +#: awx/api/views.py:292 msgid "'eula_accepted' value is invalid" msgstr "" -#: awx/api/views.py:294 +#: awx/api/views.py:295 msgid "'eula_accepted' must be True" msgstr "" -#: awx/api/views.py:301 +#: awx/api/views.py:302 msgid "Invalid JSON" msgstr "" -#: awx/api/views.py:309 +#: awx/api/views.py:310 msgid "Invalid License" msgstr "" -#: awx/api/views.py:319 +#: awx/api/views.py:320 msgid "Invalid license" msgstr "" -#: awx/api/views.py:327 +#: awx/api/views.py:328 #, python-format msgid "Failed to remove license (%s)" msgstr "" -#: awx/api/views.py:332 +#: awx/api/views.py:333 msgid "Dashboard" msgstr "" -#: awx/api/views.py:438 +#: awx/api/views.py:439 msgid "Dashboard Jobs Graphs" msgstr "" -#: awx/api/views.py:474 +#: awx/api/views.py:475 #, python-format msgid "Unknown period \"%s\"" msgstr "" -#: awx/api/views.py:488 +#: awx/api/views.py:489 msgid "Schedules" msgstr "" -#: awx/api/views.py:507 +#: awx/api/views.py:508 msgid "Schedule Jobs List" msgstr "" -#: awx/api/views.py:717 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "" -#: awx/api/views.py:942 awx/api/views.py:1301 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "" -#: awx/api/views.py:948 awx/api/views.py:4106 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "" -#: awx/api/views.py:952 awx/api/views.py:4120 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "" -#: awx/api/views.py:959 awx/api/views.py:4112 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" msgstr "" -#: awx/api/views.py:1049 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "" -#: awx/api/views.py:1078 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "" -#: awx/api/views.py:1182 awx/api/views.py:2273 awx/api/views.py:3286 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" -#: awx/api/views.py:1259 +#: awx/api/views.py:1272 msgid "Me" msgstr "" -#: awx/api/views.py:1305 awx/api/views.py:4061 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "" -#: awx/api/views.py:1311 awx/api/views.py:4065 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "" -#: awx/api/views.py:1316 awx/api/views.py:4070 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" msgstr "" -#: awx/api/views.py:1320 awx/api/views.py:4074 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "" -#: awx/api/views.py:1418 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "" -#: awx/api/views.py:1424 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "" -#: awx/api/views.py:1572 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "" -#: awx/api/views.py:1808 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "" -#: awx/api/views.py:2128 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "" -#: awx/api/views.py:2156 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "" -#: awx/api/views.py:2164 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "" -#: awx/api/views.py:2194 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -#: awx/api/views.py:2405 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "" -#: awx/api/views.py:2425 awx/api/views.py:2441 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "" -#: awx/api/views.py:2448 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "" -#: awx/api/views.py:2450 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "" -#: awx/api/views.py:2452 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "" -#: awx/api/views.py:2454 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "" -#: awx/api/views.py:2456 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "" -#: awx/api/views.py:2462 +#: awx/api/views.py:2484 #, python-format msgid "Survey question %s is not a json object." msgstr "" -#: awx/api/views.py:2464 +#: awx/api/views.py:2486 #, python-format msgid "'type' missing from survey question %s." msgstr "" -#: awx/api/views.py:2466 +#: awx/api/views.py:2488 #, python-format msgid "'question_name' missing from survey question %s." msgstr "" -#: awx/api/views.py:2468 +#: awx/api/views.py:2490 #, python-format msgid "'variable' missing from survey question %s." msgstr "" -#: awx/api/views.py:2470 +#: awx/api/views.py:2492 #, python-format msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." msgstr "" -#: awx/api/views.py:2475 +#: awx/api/views.py:2497 #, python-format msgid "'required' missing from survey question %s." msgstr "" -#: awx/api/views.py:2686 +#: awx/api/views.py:2582 +msgid "Maximum number of labels for {} reached." +msgstr "" + +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "" -#: awx/api/views.py:2689 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "" -#: awx/api/views.py:2694 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" -#: awx/api/views.py:2701 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "" -#: awx/api/views.py:2714 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "" -#: awx/api/views.py:3043 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "" -#: awx/api/views.py:3185 awx/api/views.py:3728 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "" -#: awx/api/views.py:3217 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "" -#: awx/api/views.py:3409 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "" -#: awx/api/views.py:3451 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "" -#: awx/api/views.py:3460 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "" -#: awx/api/views.py:3469 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "" -#: awx/api/views.py:3682 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "" -#: awx/api/views.py:3874 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "" -#: awx/api/views.py:3887 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "" -#: awx/api/views.py:3932 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "" -#: awx/api/views.py:3939 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "" -#: awx/api/views.py:4055 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "" -#: awx/api/views.py:4098 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "" @@ -876,7 +894,7 @@ msgstr "" msgid "User" msgstr "" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "" @@ -920,6 +938,10 @@ msgstr "" msgid "User-Defaults" msgstr "" +#: awx/conf/registry.py:133 +msgid "This value has been set manually in a settings file." +msgstr "" + #: awx/conf/tests/unit/test_registry.py:46 #: awx/conf/tests/unit/test_registry.py:56 #: awx/conf/tests/unit/test_registry.py:72 @@ -940,18 +962,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:67 -#: awx/conf/tests/unit/test_settings.py:81 +#: awx/conf/tests/unit/test_settings.py:79 #: awx/conf/tests/unit/test_settings.py:97 -#: awx/conf/tests/unit/test_settings.py:110 +#: awx/conf/tests/unit/test_settings.py:112 #: awx/conf/tests/unit/test_settings.py:127 #: awx/conf/tests/unit/test_settings.py:143 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:183 -#: awx/conf/tests/unit/test_settings.py:197 -#: awx/conf/tests/unit/test_settings.py:221 -#: awx/conf/tests/unit/test_settings.py:241 -#: awx/conf/tests/unit/test_settings.py:258 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 +#: awx/conf/tests/unit/test_settings.py:189 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -973,72 +1004,72 @@ msgstr "" msgid "Setting Detail" msgstr "" -#: awx/main/access.py:255 +#: awx/main/access.py:266 #, python-format msgid "Bad data found in related field %s." msgstr "" -#: awx/main/access.py:296 +#: awx/main/access.py:307 msgid "License is missing." msgstr "" -#: awx/main/access.py:298 +#: awx/main/access.py:309 msgid "License has expired." msgstr "" -#: awx/main/access.py:306 +#: awx/main/access.py:317 #, python-format msgid "License count of %s instances has been reached." msgstr "" -#: awx/main/access.py:308 +#: awx/main/access.py:319 #, python-format msgid "License count of %s instances has been exceeded." msgstr "" -#: awx/main/access.py:310 +#: awx/main/access.py:321 msgid "Host count exceeds available instances." msgstr "" -#: awx/main/access.py:314 +#: awx/main/access.py:325 #, python-format msgid "Feature %s is not enabled in the active license." msgstr "" -#: awx/main/access.py:316 +#: awx/main/access.py:327 msgid "Features not found in active license." msgstr "" -#: awx/main/access.py:514 awx/main/access.py:581 awx/main/access.py:706 -#: awx/main/access.py:969 awx/main/access.py:1208 awx/main/access.py:1605 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "" -#: awx/main/access.py:625 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "" -#: awx/main/access.py:642 awx/main/access.py:687 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "" -#: awx/main/access.py:675 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "" -#: awx/main/access.py:889 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "" -#: awx/main/access.py:902 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "" -#: awx/main/access.py:904 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "" -#: awx/main/access.py:1678 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1133,174 +1164,176 @@ msgstr "" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "" -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." msgstr "" -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "" -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "" -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "" -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" "Whitelist of paths that would otherwise be hidden to expose to isolated jobs." msgstr "" -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "" -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." msgstr "" -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." msgstr "" -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " "override this." msgstr "" -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "" -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "" -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:274 awx/main/conf.py:288 -#: awx/main/conf.py:300 awx/main/conf.py:309 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "" -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "" -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:272 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "" -#: awx/main/conf.py:273 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:281 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "" -#: awx/main/conf.py:282 +#: awx/main/conf.py:289 msgid "" "List of loggers that will send HTTP logs to the collector, these can include " "any or all of: \n" @@ -1310,11 +1343,11 @@ msgid "" "system_tracking - facts gathered from scan jobs." msgstr "" -#: awx/main/conf.py:295 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "" -#: awx/main/conf.py:296 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " "orother item found in a scan, allowing for greater search query granularity. " @@ -1322,14 +1355,22 @@ msgid "" "efficiency in fact processing." msgstr "" -#: awx/main/conf.py:307 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "" -#: awx/main/conf.py:308 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "" +#: awx/main/conf.py:323 +msgid "Cluster-wide Tower unique identifier." +msgstr "" + +#: awx/main/conf.py:324 +msgid "Useful to uniquely identify Tower instances." +msgstr "" + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "" @@ -1354,7 +1395,7 @@ msgstr "" msgid "No valid inventory." msgstr "" -#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:161 +#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:160 msgid "You must provide a machine / SSH credential." msgstr "" @@ -1372,43 +1413,43 @@ msgstr "" msgid "No argument passed to %s module." msgstr "" -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:766 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:767 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:770 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:769 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:797 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:798 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:799 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:800 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:801 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:802 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "" @@ -1475,31 +1516,31 @@ msgstr "" msgid "Rackspace" msgstr "" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "" @@ -1687,7 +1728,11 @@ msgstr "" msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "" @@ -1705,377 +1750,377 @@ msgid "" "host." msgstr "" -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "" -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "" -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "" -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "" -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "" -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "" -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "" -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." msgstr "" -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "" -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:402 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "" -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." msgstr "" -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "" -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." msgstr "" -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "" -#: awx/main/models/jobs.py:169 +#: awx/main/models/jobs.py:168 msgid "You must provide a network credential." msgstr "" -#: awx/main/models/jobs.py:177 +#: awx/main/models/jobs.py:176 msgid "" "Must provide a credential for a cloud provider, such as Amazon Web Services " "or Rackspace." msgstr "" -#: awx/main/models/jobs.py:269 +#: awx/main/models/jobs.py:268 msgid "Job Template must provide 'inventory' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:273 +#: awx/main/models/jobs.py:272 msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:362 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "" -#: awx/main/models/jobs.py:365 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" -#: awx/main/models/jobs.py:431 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "" -#: awx/main/models/jobs.py:432 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -#: awx/main/models/jobs.py:665 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "" -#: awx/main/models/jobs.py:771 awx/main/models/jobs.py:785 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "" -#: awx/main/models/jobs.py:773 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "" -#: awx/main/models/jobs.py:780 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "" -#: awx/main/models/jobs.py:781 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "" -#: awx/main/models/jobs.py:782 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "" -#: awx/main/models/jobs.py:783 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "" -#: awx/main/models/jobs.py:784 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "" -#: awx/main/models/jobs.py:786 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "" -#: awx/main/models/jobs.py:788 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "" -#: awx/main/models/jobs.py:789 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "" -#: awx/main/models/jobs.py:790 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "" -#: awx/main/models/jobs.py:791 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "" -#: awx/main/models/jobs.py:792 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "" -#: awx/main/models/jobs.py:793 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "" -#: awx/main/models/jobs.py:1203 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1204 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1205 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" @@ -2143,11 +2188,11 @@ msgstr "" msgid "Invalid token" msgstr "" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "" -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "" @@ -2163,179 +2208,183 @@ msgstr "" msgid "Subversion" msgstr "" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +msgid "Red Hat Insights" +msgstr "" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." msgstr "" -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "" -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "" -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "" -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "" -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "" -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "" -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "" -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "" -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." msgstr "" -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "" -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "" -#: awx/main/models/rbac.py:36 +#: awx/main/models/rbac.py:37 msgid "System Administrator" msgstr "" -#: awx/main/models/rbac.py:37 +#: awx/main/models/rbac.py:38 msgid "System Auditor" msgstr "" -#: awx/main/models/rbac.py:38 +#: awx/main/models/rbac.py:39 msgid "Ad Hoc" msgstr "" -#: awx/main/models/rbac.py:39 +#: awx/main/models/rbac.py:40 msgid "Admin" msgstr "" -#: awx/main/models/rbac.py:40 +#: awx/main/models/rbac.py:41 msgid "Auditor" msgstr "" -#: awx/main/models/rbac.py:41 +#: awx/main/models/rbac.py:42 msgid "Execute" msgstr "" -#: awx/main/models/rbac.py:42 +#: awx/main/models/rbac.py:43 msgid "Member" msgstr "" -#: awx/main/models/rbac.py:43 +#: awx/main/models/rbac.py:44 msgid "Read" msgstr "" -#: awx/main/models/rbac.py:44 +#: awx/main/models/rbac.py:45 msgid "Update" msgstr "" -#: awx/main/models/rbac.py:45 +#: awx/main/models/rbac.py:46 msgid "Use" msgstr "" -#: awx/main/models/rbac.py:49 +#: awx/main/models/rbac.py:50 msgid "Can manage all aspects of the system" msgstr "" -#: awx/main/models/rbac.py:50 +#: awx/main/models/rbac.py:51 msgid "Can view all settings on the system" msgstr "" -#: awx/main/models/rbac.py:51 -msgid "May run ad hoc commands on an inventory" -msgstr "" - #: awx/main/models/rbac.py:52 -#, python-format -msgid "Can manage all aspects of the %s" +msgid "May run ad hoc commands on an inventory" msgstr "" #: awx/main/models/rbac.py:53 #, python-format -msgid "Can view all settings for the %s" +msgid "Can manage all aspects of the %s" msgstr "" #: awx/main/models/rbac.py:54 #, python-format -msgid "May run the %s" +msgid "Can view all settings for the %s" msgstr "" #: awx/main/models/rbac.py:55 #, python-format -msgid "User is a member of the %s" +msgid "May run the %s" msgstr "" #: awx/main/models/rbac.py:56 #, python-format -msgid "May view settings for the %s" +msgid "User is a member of the %s" msgstr "" #: awx/main/models/rbac.py:57 +#, python-format +msgid "May view settings for the %s" +msgstr "" + +#: awx/main/models/rbac.py:58 msgid "" "May update project or inventory or group using the configured source update " "system" msgstr "" -#: awx/main/models/rbac.py:58 +#: awx/main/models/rbac.py:59 #, python-format msgid "Can use the %s in a job template" msgstr "" -#: awx/main/models/rbac.py:122 +#: awx/main/models/rbac.py:123 msgid "roles" msgstr "" -#: awx/main/models/rbac.py:438 +#: awx/main/models/rbac.py:435 msgid "role_ancestors" msgstr "" @@ -2398,47 +2447,47 @@ msgstr "" msgid "Updating" msgstr "" -#: awx/main/models/unified_jobs.py:403 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "" -#: awx/main/models/unified_jobs.py:404 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "" -#: awx/main/models/unified_jobs.py:405 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "" -#: awx/main/models/unified_jobs.py:406 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "" -#: awx/main/models/unified_jobs.py:407 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "" -#: awx/main/models/unified_jobs.py:408 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "" -#: awx/main/models/unified_jobs.py:454 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "" -#: awx/main/models/unified_jobs.py:480 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "" -#: awx/main/models/unified_jobs.py:486 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "" -#: awx/main/models/unified_jobs.py:492 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "" -#: awx/main/models/unified_jobs.py:514 +#: awx/main/models/unified_jobs.py:526 msgid "" "A status field to indicate the state of the job if it wasn't able to run and " "capture stdout" @@ -2451,11 +2500,11 @@ msgid "" "\n" msgstr "" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "" @@ -2482,61 +2531,67 @@ msgstr "" msgid "Error sending notification webhook: {}" msgstr "" -#: awx/main/scheduler/__init__.py:130 +#: awx/main/scheduler/__init__.py:127 msgid "" "Job spawned from workflow could not start because it was not in the right " "state or required manual credentials" msgstr "" -#: awx/main/tasks.py:180 +#: awx/main/scheduler/__init__.py:131 +msgid "" +"Job spawned from workflow could not start because it was missing a related " +"resource such as project or inventory" +msgstr "" + +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "" -#: awx/main/utils/common.py:243 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "" -#: awx/main/utils/common.py:250 awx/main/utils/common.py:262 -#: awx/main/utils/common.py:281 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:290 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "" -#: awx/main/utils/common.py:292 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "" -#: awx/main/utils/common.py:312 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "" -#: awx/main/utils/common.py:318 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "" @@ -2647,195 +2702,195 @@ msgstr "" msgid "A server error has occurred." msgstr "" -#: awx/settings/defaults.py:624 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "" -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:632 msgid "London" msgstr "" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "" -#: awx/settings/defaults.py:656 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "" -#: awx/settings/defaults.py:720 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "" -#: awx/settings/defaults.py:756 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "" -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "" -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "" -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "" -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "" @@ -2952,10 +3007,10 @@ msgid "" msgstr "" #: awx/sso/conf.py:181 awx/sso/conf.py:199 awx/sso/conf.py:211 -#: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:258 -#: awx/sso/conf.py:280 awx/sso/conf.py:296 awx/sso/conf.py:315 -#: awx/sso/conf.py:332 awx/sso/conf.py:349 awx/sso/conf.py:365 -#: awx/sso/conf.py:382 awx/sso/conf.py:420 awx/sso/conf.py:461 +#: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:259 +#: awx/sso/conf.py:281 awx/sso/conf.py:297 awx/sso/conf.py:316 +#: awx/sso/conf.py:333 awx/sso/conf.py:350 awx/sso/conf.py:366 +#: awx/sso/conf.py:383 awx/sso/conf.py:421 awx/sso/conf.py:462 msgid "LDAP" msgstr "" @@ -3000,11 +3055,11 @@ msgid "" "values that can be set." msgstr "" -#: awx/sso/conf.py:251 +#: awx/sso/conf.py:252 msgid "LDAP User Search" msgstr "" -#: awx/sso/conf.py:252 +#: awx/sso/conf.py:253 msgid "" "LDAP search query to find users. Any user that matches the given pattern " "will be able to login to Tower. The user should also be mapped into an " @@ -3013,11 +3068,11 @@ msgid "" "possible. See python-ldap documentation as linked at the top of this section." msgstr "" -#: awx/sso/conf.py:274 +#: awx/sso/conf.py:275 msgid "LDAP User DN Template" msgstr "" -#: awx/sso/conf.py:275 +#: awx/sso/conf.py:276 msgid "" "Alternative to user search, if user DNs are all of the same format. This " "approach will be more efficient for user lookups than searching if it is " @@ -3025,11 +3080,11 @@ msgid "" "will be used instead of AUTH_LDAP_USER_SEARCH." msgstr "" -#: awx/sso/conf.py:290 +#: awx/sso/conf.py:291 msgid "LDAP User Attribute Map" msgstr "" -#: awx/sso/conf.py:291 +#: awx/sso/conf.py:292 msgid "" "Mapping of LDAP user schema to Tower API user attributes (key is user " "attribute name, value is LDAP attribute name). The default setting is valid " @@ -3037,67 +3092,67 @@ msgid "" "change the values (not the keys) of the dictionary/hash-table." msgstr "" -#: awx/sso/conf.py:310 +#: awx/sso/conf.py:311 msgid "LDAP Group Search" msgstr "" -#: awx/sso/conf.py:311 +#: awx/sso/conf.py:312 msgid "" "Users in Tower are mapped to organizations based on their membership in LDAP " "groups. This setting defines the LDAP search query to find groups. Note that " "this, unlike the user search above, does not support LDAPSearchUnion." msgstr "" -#: awx/sso/conf.py:328 +#: awx/sso/conf.py:329 msgid "LDAP Group Type" msgstr "" -#: awx/sso/conf.py:329 +#: awx/sso/conf.py:330 msgid "" "The group type may need to be changed based on the type of the LDAP server. " "Values are listed at: http://pythonhosted.org/django-auth-ldap/groups." "html#types-of-groups" msgstr "" -#: awx/sso/conf.py:344 +#: awx/sso/conf.py:345 msgid "LDAP Require Group" msgstr "" -#: awx/sso/conf.py:345 +#: awx/sso/conf.py:346 msgid "" "Group DN required to login. If specified, user must be a member of this " "group to login via LDAP. If not set, everyone in LDAP that matches the user " "search will be able to login via Tower. Only one require group is supported." msgstr "" -#: awx/sso/conf.py:361 +#: awx/sso/conf.py:362 msgid "LDAP Deny Group" msgstr "" -#: awx/sso/conf.py:362 +#: awx/sso/conf.py:363 msgid "" "Group DN denied from login. If specified, user will not be allowed to login " "if a member of this group. Only one deny group is supported." msgstr "" -#: awx/sso/conf.py:375 +#: awx/sso/conf.py:376 msgid "LDAP User Flags By Group" msgstr "" -#: awx/sso/conf.py:376 +#: awx/sso/conf.py:377 msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." -msgstr "" - -#: awx/sso/conf.py:394 -msgid "LDAP Organization Map" +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" #: awx/sso/conf.py:395 +msgid "LDAP Organization Map" +msgstr "" + +#: awx/sso/conf.py:396 msgid "" "Mapping between organization admins/users and LDAP groups. This controls " "what users are placed into what Tower organizations relative to their LDAP " @@ -3124,11 +3179,11 @@ msgid "" "remove_admins." msgstr "" -#: awx/sso/conf.py:443 +#: awx/sso/conf.py:444 msgid "LDAP Team Map" msgstr "" -#: awx/sso/conf.py:444 +#: awx/sso/conf.py:445 msgid "" "Mapping between team members (users) and LDAP groups. Keys are team names " "(will be created if not present). Values are dictionaries of options for " @@ -3147,88 +3202,88 @@ msgid "" "of the given groups will be removed from the team." msgstr "" -#: awx/sso/conf.py:487 +#: awx/sso/conf.py:488 msgid "RADIUS Server" msgstr "" -#: awx/sso/conf.py:488 +#: awx/sso/conf.py:489 msgid "" "Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " "setting is empty." msgstr "" -#: awx/sso/conf.py:490 awx/sso/conf.py:504 awx/sso/conf.py:516 +#: awx/sso/conf.py:491 awx/sso/conf.py:505 awx/sso/conf.py:517 msgid "RADIUS" msgstr "" -#: awx/sso/conf.py:502 +#: awx/sso/conf.py:503 msgid "RADIUS Port" msgstr "" -#: awx/sso/conf.py:503 +#: awx/sso/conf.py:504 msgid "Port of RADIUS server." msgstr "" -#: awx/sso/conf.py:514 +#: awx/sso/conf.py:515 msgid "RADIUS Secret" msgstr "" -#: awx/sso/conf.py:515 +#: awx/sso/conf.py:516 msgid "Shared secret for authenticating to RADIUS server." msgstr "" -#: awx/sso/conf.py:531 +#: awx/sso/conf.py:532 msgid "Google OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:532 +#: awx/sso/conf.py:533 msgid "" "Create a project at https://console.developers.google.com/ to obtain an " "OAuth2 key and secret for a web application. Ensure that the Google+ API is " "enabled. Provide this URL as the callback URL for your application." msgstr "" -#: awx/sso/conf.py:536 awx/sso/conf.py:547 awx/sso/conf.py:558 -#: awx/sso/conf.py:571 awx/sso/conf.py:585 awx/sso/conf.py:597 -#: awx/sso/conf.py:609 +#: awx/sso/conf.py:537 awx/sso/conf.py:548 awx/sso/conf.py:559 +#: awx/sso/conf.py:572 awx/sso/conf.py:586 awx/sso/conf.py:598 +#: awx/sso/conf.py:610 msgid "Google OAuth2" msgstr "" -#: awx/sso/conf.py:545 +#: awx/sso/conf.py:546 msgid "Google OAuth2 Key" msgstr "" -#: awx/sso/conf.py:546 +#: awx/sso/conf.py:547 msgid "" "The OAuth2 key from your web application at https://console.developers." "google.com/." msgstr "" -#: awx/sso/conf.py:556 +#: awx/sso/conf.py:557 msgid "Google OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:557 +#: awx/sso/conf.py:558 msgid "" "The OAuth2 secret from your web application at https://console.developers." "google.com/." msgstr "" -#: awx/sso/conf.py:568 +#: awx/sso/conf.py:569 msgid "Google OAuth2 Whitelisted Domains" msgstr "" -#: awx/sso/conf.py:569 +#: awx/sso/conf.py:570 msgid "" "Update this setting to restrict the domains who are allowed to login using " "Google OAuth2." msgstr "" -#: awx/sso/conf.py:580 +#: awx/sso/conf.py:581 msgid "Google OAuth2 Extra Arguments" msgstr "" -#: awx/sso/conf.py:581 +#: awx/sso/conf.py:582 msgid "" "Extra arguments for Google OAuth2 login. When only allowing a single domain " "to authenticate, set to `{\"hd\": \"yourdomain.com\"}` and Google will not " @@ -3236,60 +3291,60 @@ msgid "" "Google accounts." msgstr "" -#: awx/sso/conf.py:595 +#: awx/sso/conf.py:596 msgid "Google OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:607 +#: awx/sso/conf.py:608 msgid "Google OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:623 +#: awx/sso/conf.py:624 msgid "GitHub OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:624 +#: awx/sso/conf.py:625 msgid "" "Create a developer application at https://github.com/settings/developers to " "obtain an OAuth2 key (Client ID) and secret (Client Secret). Provide this " "URL as the callback URL for your application." msgstr "" -#: awx/sso/conf.py:628 awx/sso/conf.py:639 awx/sso/conf.py:649 -#: awx/sso/conf.py:661 awx/sso/conf.py:673 +#: awx/sso/conf.py:629 awx/sso/conf.py:640 awx/sso/conf.py:650 +#: awx/sso/conf.py:662 awx/sso/conf.py:674 msgid "GitHub OAuth2" msgstr "" -#: awx/sso/conf.py:637 +#: awx/sso/conf.py:638 msgid "GitHub OAuth2 Key" msgstr "" -#: awx/sso/conf.py:638 +#: awx/sso/conf.py:639 msgid "The OAuth2 key (Client ID) from your GitHub developer application." msgstr "" -#: awx/sso/conf.py:647 +#: awx/sso/conf.py:648 msgid "GitHub OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:648 +#: awx/sso/conf.py:649 msgid "" "The OAuth2 secret (Client Secret) from your GitHub developer application." msgstr "" -#: awx/sso/conf.py:659 +#: awx/sso/conf.py:660 msgid "GitHub OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:671 +#: awx/sso/conf.py:672 msgid "GitHub OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:687 +#: awx/sso/conf.py:688 msgid "GitHub Organization OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:688 awx/sso/conf.py:763 +#: awx/sso/conf.py:689 awx/sso/conf.py:764 msgid "" "Create an organization-owned application at https://github.com/organizations/" "/settings/applications and obtain an OAuth2 key (Client ID) and " @@ -3297,86 +3352,86 @@ msgid "" "application." msgstr "" -#: awx/sso/conf.py:692 awx/sso/conf.py:703 awx/sso/conf.py:713 -#: awx/sso/conf.py:725 awx/sso/conf.py:736 awx/sso/conf.py:748 +#: awx/sso/conf.py:693 awx/sso/conf.py:704 awx/sso/conf.py:714 +#: awx/sso/conf.py:726 awx/sso/conf.py:737 awx/sso/conf.py:749 msgid "GitHub Organization OAuth2" msgstr "" -#: awx/sso/conf.py:701 +#: awx/sso/conf.py:702 msgid "GitHub Organization OAuth2 Key" msgstr "" -#: awx/sso/conf.py:702 awx/sso/conf.py:777 +#: awx/sso/conf.py:703 awx/sso/conf.py:778 msgid "The OAuth2 key (Client ID) from your GitHub organization application." msgstr "" -#: awx/sso/conf.py:711 +#: awx/sso/conf.py:712 msgid "GitHub Organization OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:712 awx/sso/conf.py:787 +#: awx/sso/conf.py:713 awx/sso/conf.py:788 msgid "" "The OAuth2 secret (Client Secret) from your GitHub organization application." msgstr "" -#: awx/sso/conf.py:722 +#: awx/sso/conf.py:723 msgid "GitHub Organization Name" msgstr "" -#: awx/sso/conf.py:723 +#: awx/sso/conf.py:724 msgid "" "The name of your GitHub organization, as used in your organization's URL: " "https://github.com//." msgstr "" -#: awx/sso/conf.py:734 +#: awx/sso/conf.py:735 msgid "GitHub Organization OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:746 +#: awx/sso/conf.py:747 msgid "GitHub Organization OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:762 +#: awx/sso/conf.py:763 msgid "GitHub Team OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:767 awx/sso/conf.py:778 awx/sso/conf.py:788 -#: awx/sso/conf.py:800 awx/sso/conf.py:811 awx/sso/conf.py:823 +#: awx/sso/conf.py:768 awx/sso/conf.py:779 awx/sso/conf.py:789 +#: awx/sso/conf.py:801 awx/sso/conf.py:812 awx/sso/conf.py:824 msgid "GitHub Team OAuth2" msgstr "" -#: awx/sso/conf.py:776 +#: awx/sso/conf.py:777 msgid "GitHub Team OAuth2 Key" msgstr "" -#: awx/sso/conf.py:786 +#: awx/sso/conf.py:787 msgid "GitHub Team OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:797 +#: awx/sso/conf.py:798 msgid "GitHub Team ID" msgstr "" -#: awx/sso/conf.py:798 +#: awx/sso/conf.py:799 msgid "" "Find the numeric team ID using the Github API: http://fabian-kostadinov." "github.io/2015/01/16/how-to-find-a-github-team-id/." msgstr "" -#: awx/sso/conf.py:809 +#: awx/sso/conf.py:810 msgid "GitHub Team OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:821 +#: awx/sso/conf.py:822 msgid "GitHub Team OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:837 +#: awx/sso/conf.py:838 msgid "Azure AD OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:838 +#: awx/sso/conf.py:839 msgid "" "Register an Azure AD application as described by https://msdn.microsoft.com/" "en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " @@ -3384,118 +3439,118 @@ msgid "" "application." msgstr "" -#: awx/sso/conf.py:842 awx/sso/conf.py:853 awx/sso/conf.py:863 -#: awx/sso/conf.py:875 awx/sso/conf.py:887 +#: awx/sso/conf.py:843 awx/sso/conf.py:854 awx/sso/conf.py:864 +#: awx/sso/conf.py:876 awx/sso/conf.py:888 msgid "Azure AD OAuth2" msgstr "" -#: awx/sso/conf.py:851 +#: awx/sso/conf.py:852 msgid "Azure AD OAuth2 Key" msgstr "" -#: awx/sso/conf.py:852 +#: awx/sso/conf.py:853 msgid "The OAuth2 key (Client ID) from your Azure AD application." msgstr "" -#: awx/sso/conf.py:861 +#: awx/sso/conf.py:862 msgid "Azure AD OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:862 +#: awx/sso/conf.py:863 msgid "The OAuth2 secret (Client Secret) from your Azure AD application." msgstr "" -#: awx/sso/conf.py:873 +#: awx/sso/conf.py:874 msgid "Azure AD OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:885 +#: awx/sso/conf.py:886 msgid "Azure AD OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:906 +#: awx/sso/conf.py:907 msgid "SAML Service Provider Callback URL" msgstr "" -#: awx/sso/conf.py:907 +#: awx/sso/conf.py:908 msgid "" "Register Tower as a service provider (SP) with each identity provider (IdP) " "you have configured. Provide your SP Entity ID and this callback URL for " "your application." msgstr "" -#: awx/sso/conf.py:910 awx/sso/conf.py:924 awx/sso/conf.py:937 -#: awx/sso/conf.py:951 awx/sso/conf.py:965 awx/sso/conf.py:983 -#: awx/sso/conf.py:1005 awx/sso/conf.py:1024 awx/sso/conf.py:1044 -#: awx/sso/conf.py:1078 awx/sso/conf.py:1091 +#: awx/sso/conf.py:911 awx/sso/conf.py:925 awx/sso/conf.py:938 +#: awx/sso/conf.py:952 awx/sso/conf.py:966 awx/sso/conf.py:984 +#: awx/sso/conf.py:1006 awx/sso/conf.py:1025 awx/sso/conf.py:1045 +#: awx/sso/conf.py:1079 awx/sso/conf.py:1092 msgid "SAML" msgstr "" -#: awx/sso/conf.py:921 +#: awx/sso/conf.py:922 msgid "SAML Service Provider Metadata URL" msgstr "" -#: awx/sso/conf.py:922 +#: awx/sso/conf.py:923 msgid "" "If your identity provider (IdP) allows uploading an XML metadata file, you " "can download one from this URL." msgstr "" -#: awx/sso/conf.py:934 +#: awx/sso/conf.py:935 msgid "SAML Service Provider Entity ID" msgstr "" -#: awx/sso/conf.py:935 +#: awx/sso/conf.py:936 msgid "" "The application-defined unique identifier used as the audience of the SAML " "service provider (SP) configuration." msgstr "" -#: awx/sso/conf.py:948 +#: awx/sso/conf.py:949 msgid "SAML Service Provider Public Certificate" msgstr "" -#: awx/sso/conf.py:949 +#: awx/sso/conf.py:950 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "certificate content here." msgstr "" -#: awx/sso/conf.py:962 +#: awx/sso/conf.py:963 msgid "SAML Service Provider Private Key" msgstr "" -#: awx/sso/conf.py:963 +#: awx/sso/conf.py:964 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "private key content here." msgstr "" -#: awx/sso/conf.py:981 +#: awx/sso/conf.py:982 msgid "SAML Service Provider Organization Info" msgstr "" -#: awx/sso/conf.py:982 +#: awx/sso/conf.py:983 msgid "Configure this setting with information about your app." msgstr "" -#: awx/sso/conf.py:1003 +#: awx/sso/conf.py:1004 msgid "SAML Service Provider Technical Contact" msgstr "" -#: awx/sso/conf.py:1004 awx/sso/conf.py:1023 +#: awx/sso/conf.py:1005 awx/sso/conf.py:1024 msgid "Configure this setting with your contact information." msgstr "" -#: awx/sso/conf.py:1022 +#: awx/sso/conf.py:1023 msgid "SAML Service Provider Support Contact" msgstr "" -#: awx/sso/conf.py:1037 +#: awx/sso/conf.py:1038 msgid "SAML Enabled Identity Providers" msgstr "" -#: awx/sso/conf.py:1038 +#: awx/sso/conf.py:1039 msgid "" "Configure the Entity ID, SSO URL and certificate for each identity provider " "(IdP) in use. Multiple SAML IdPs are supported. Some IdPs may provide user " @@ -3504,11 +3559,11 @@ msgid "" "Attribute names may be overridden for each IdP." msgstr "" -#: awx/sso/conf.py:1076 +#: awx/sso/conf.py:1077 msgid "SAML Organization Map" msgstr "" -#: awx/sso/conf.py:1089 +#: awx/sso/conf.py:1090 msgid "SAML Team Map" msgstr "" @@ -3731,7 +3786,7 @@ msgstr "" #: awx/ui/conf.py:49 msgid "" "To set up a custom logo, provide a file that you create. For the custom logo " -"to look its best, use a `.png` file with a transparent background. GIF, PNG " +"to look its best, use a .png file with a transparent background. GIF, PNG " "and JPEG formats are supported." msgstr "" diff --git a/awx/ui/po/ansible-tower-ui.pot b/awx/ui/po/ansible-tower-ui.pot index 4c87ddb4d1..f90e2b7080 100644 --- a/awx/ui/po/ansible-tower-ui.pot +++ b/awx/ui/po/ansible-tower-ui.pot @@ -4,28 +4,44 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "%s or %s" msgstr "" -#: client/src/controllers/Projects.js:439 -#: client/src/controllers/Projects.js:721 +#: client/src/controllers/Projects.js:441 +#: client/src/controllers/Projects.js:740 msgid "%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." msgstr "" #: client/src/controllers/Projects.js:426 -#: client/src/controllers/Projects.js:708 +#: client/src/controllers/Projects.js:725 msgid "%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." msgstr "" -#: client/src/forms/Credentials.js:288 +#: client/src/forms/Credentials.js:289 msgid "(defaults to %s)" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:15 +#: client/src/organizations/list/organizations-list.partial.html:20 msgid "+ ADD" msgstr "" +#: client/src/partials/subhome.html:30 +msgid " Back to options" +msgstr "" + +#: client/src/partials/subhome.html:32 +msgid " Save" +msgstr "" + +#: client/src/partials/subhome.html:29 +msgid " View Details" +msgstr "" + +#: client/src/partials/subhome.html:31 +msgid " Cancel" +msgstr "" + #: client/src/management-jobs/scheduler/schedulerForm.partial.html:33 msgid "A schedule name is required." msgstr "" @@ -46,16 +62,22 @@ msgstr "" msgid "ACTION" msgstr "" +#: client/src/forms/ActivityDetail.js:25 +msgid "ACTIVITY DETAIL" +msgstr "" + #: client/src/activity-stream/activitystream.route.js:27 +#: client/src/lists/Streams.js:16 +#: client/src/lists/Streams.js:17 msgid "ACTIVITY STREAM" msgstr "" -#: client/src/forms/Credentials.js:450 -#: client/src/forms/JobTemplates.js:430 +#: client/src/forms/Credentials.js:451 +#: client/src/forms/JobTemplates.js:434 #: client/src/forms/Organizations.js:75 -#: client/src/forms/Projects.js:238 -#: client/src/forms/Teams.js:86 -#: client/src/forms/Workflows.js:128 +#: client/src/forms/Projects.js:245 +#: client/src/forms/Teams.js:87 +#: client/src/forms/Workflows.js:129 #: client/src/inventory-scripts/inventory-scripts.list.js:45 #: client/src/lists/Credentials.js:60 #: client/src/lists/Inventories.js:68 @@ -65,6 +87,7 @@ msgstr "" #: client/src/lists/Templates.js:62 #: client/src/lists/Users.js:52 #: client/src/notifications/notificationTemplates.list.js:52 +#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 msgid "ADD" msgstr "" @@ -72,16 +95,16 @@ msgstr "" msgid "ADD NOTIFICATION TEMPLATE" msgstr "" -#: client/src/forms/Teams.js:158 +#: client/src/forms/Teams.js:159 #: client/src/forms/Users.js:215 msgid "ADD PERMISSIONS" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 msgid "ADDITIONAL INFORMATION:" msgstr "" -#: client/src/organizations/linkout/organizations-linkout.route.js:325 +#: client/src/organizations/linkout/organizations-linkout.route.js:328 msgid "ADMINS" msgstr "" @@ -89,11 +112,15 @@ msgstr "" msgid "ALL ACTIVITY" msgstr "" -#: client/src/forms/Credentials.js:199 +#: client/src/lists/AllJobs.js:16 +msgid "ALL JOBS" +msgstr "" + +#: client/src/forms/Credentials.js:200 msgid "API Key" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:251 +#: client/src/notifications/notificationTemplates.form.js:250 msgid "API Service/Integration Key" msgstr "" @@ -105,15 +132,15 @@ msgstr "" msgid "About Tower" msgstr "" -#: client/src/forms/Credentials.js:92 +#: client/src/forms/Credentials.js:93 msgid "Access Key" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:229 +#: client/src/notifications/notificationTemplates.form.js:228 msgid "Account SID" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:187 +#: client/src/notifications/notificationTemplates.form.js:186 msgid "Account Token" msgstr "" @@ -122,7 +149,7 @@ msgid "Action" msgstr "" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 -#: client/src/shared/list-generator/list-generator.factory.js:547 +#: client/src/shared/list-generator/list-generator.factory.js:543 msgid "Actions" msgstr "" @@ -131,21 +158,14 @@ msgstr "" msgid "Activity" msgstr "" -#: client/src/forms/ActivityDetail.js:25 -msgid "Activity Detail" -msgstr "" - #: client/src/configuration/system-form/configuration-system.controller.js:81 -#: client/src/lists/Streams.js:16 -#: client/src/lists/Streams.js:17 msgid "Activity Stream" msgstr "" -#: client/src/forms/Inventories.js:105 +#: client/src/forms/Inventories.js:106 #: client/src/forms/Organizations.js:72 -#: client/src/forms/Teams.js:83 -#: client/src/forms/Workflows.js:125 -#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 +#: client/src/forms/Teams.js:84 +#: client/src/forms/Workflows.js:126 msgid "Add" msgstr "" @@ -165,7 +185,7 @@ msgstr "" msgid "Add Notification" msgstr "" -#: client/src/shared/stateDefinitions.factory.js:277 +#: client/src/shared/stateDefinitions.factory.js:280 msgid "Add Permissions" msgstr "" @@ -173,9 +193,9 @@ msgstr "" msgid "Add Project" msgstr "" -#: client/src/forms/JobTemplates.js:475 -#: client/src/forms/Workflows.js:173 -#: client/src/shared/form-generator.js:1719 +#: client/src/forms/JobTemplates.js:479 +#: client/src/forms/Workflows.js:174 +#: client/src/shared/form-generator.js:1728 msgid "Add Survey" msgstr "" @@ -183,13 +203,13 @@ msgstr "" msgid "Add Team" msgstr "" -#: client/src/forms/Teams.js:84 +#: client/src/forms/Teams.js:85 msgid "Add User" msgstr "" #: client/src/lists/Users.js:19 -#: client/src/shared/stateDefinitions.factory.js:342 -#: client/src/shared/stateDefinitions.factory.js:511 +#: client/src/shared/stateDefinitions.factory.js:345 +#: client/src/shared/stateDefinitions.factory.js:518 msgid "Add Users" msgstr "" @@ -201,11 +221,11 @@ msgstr "" msgid "Add a new schedule" msgstr "" -#: client/src/forms/Credentials.js:448 -#: client/src/forms/Inventories.js:107 -#: client/src/forms/JobTemplates.js:428 -#: client/src/forms/Projects.js:236 -#: client/src/forms/Workflows.js:126 +#: client/src/forms/Credentials.js:449 +#: client/src/forms/Inventories.js:108 +#: client/src/forms/JobTemplates.js:432 +#: client/src/forms/Projects.js:243 +#: client/src/forms/Workflows.js:127 msgid "Add a permission" msgstr "" @@ -213,7 +233,7 @@ 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/shared/form-generator.js:1462 +#: client/src/shared/form-generator.js:1471 msgid "Admin" msgstr "" @@ -231,7 +251,6 @@ msgstr "" msgid "All Activity" msgstr "" -#: client/src/lists/AllJobs.js:16 #: client/src/portal-mode/portal-mode-jobs.partial.html:7 #: client/src/portal-mode/portal-mode-layout.partial.html:12 msgid "All Jobs" @@ -250,19 +269,19 @@ msgstr "" msgid "Always" msgstr "" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 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/Credentials.js:104 +#: client/src/controllers/Credentials.js:102 msgid "Are you sure you want to delete the credential below?" msgstr "" -#: client/src/helpers/Jobs.js:231 +#: client/src/helpers/Jobs.js:227 msgid "Are you sure you want to delete the job below?" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:184 +#: client/src/notifications/notification-templates-list/list.controller.js:182 msgid "Are you sure you want to delete the notification template below?" msgstr "" @@ -270,7 +289,7 @@ msgstr "" msgid "Are you sure you want to delete the organization below?" msgstr "" -#: client/src/controllers/Projects.js:204 +#: client/src/controllers/Projects.js:202 msgid "Are you sure you want to delete the project below?" msgstr "" @@ -278,8 +297,12 @@ msgstr "" msgid "Are you sure you want to delete the user below?" msgstr "" -#: client/src/controllers/Credentials.js:578 -#: client/src/controllers/Projects.js:689 +#: client/src/partials/survey-maker-modal.html:13 +msgid "Are you sure you want to delete this {{deleteMode}}?" +msgstr "" + +#: client/src/controllers/Credentials.js:588 +#: client/src/controllers/Projects.js:704 msgid "Are you sure you want to remove the %s below from %s?" msgstr "" @@ -287,14 +310,14 @@ msgstr "" msgid "Arguments" msgstr "" -#: client/src/forms/Credentials.js:233 -#: client/src/forms/Credentials.js:272 -#: client/src/forms/Credentials.js:312 -#: client/src/forms/Credentials.js:398 +#: client/src/forms/Credentials.js:234 +#: client/src/forms/Credentials.js:273 +#: client/src/forms/Credentials.js:313 +#: client/src/forms/Credentials.js:399 msgid "Ask at runtime?" msgstr "" -#: client/src/shared/form-generator.js:1464 +#: client/src/shared/form-generator.js:1473 msgid "Auditor" msgstr "" @@ -302,23 +325,23 @@ msgstr "" msgid "Authentication" msgstr "" -#: client/src/forms/Credentials.js:73 +#: client/src/forms/Credentials.js:74 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 +#: client/src/forms/Credentials.js:70 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:344 +#: client/src/forms/Credentials.js:345 msgid "Authorize" msgstr "" -#: client/src/forms/Credentials.js:352 +#: client/src/forms/Credentials.js:353 msgid "Authorize Password" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:101 +#: client/src/configuration/auth-form/configuration-auth.controller.js:103 msgid "Azure AD" msgstr "" @@ -326,7 +349,7 @@ msgstr "" msgid "BROWSE" msgstr "" -#: client/src/forms/Projects.js:80 +#: client/src/forms/Projects.js:81 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 "" @@ -338,14 +361,31 @@ msgstr "" msgid "Browse" msgstr "" +#: client/src/partials/survey-maker-modal.html:17 +#: client/src/partials/survey-maker-modal.html:84 +msgid "CANCEL" +msgstr "" + #: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:20 msgid "CHANGES" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:31 +#: client/src/shared/smart-search/smart-search.partial.html:30 msgid "CLEAR ALL" msgstr "" +#: client/src/partials/survey-maker-modal.html:85 +msgid "CLOSE" +msgstr "" + +#: client/src/lists/CompletedJobs.js:18 +msgid "COMPLETED JOBS" +msgstr "" + +#: client/src/configuration/configuration.partial.html:10 +msgid "CONFIGURE TOWER" +msgstr "" + #: client/src/inventories/manage/copy-move/copy-move.route.js:29 #: client/src/inventories/manage/copy-move/copy-move.route.js:65 msgid "COPY OR MOVE" @@ -355,7 +395,15 @@ msgstr "" msgid "CREATE %s" msgstr "" -#: client/src/inventories/main.js:117 +#: client/src/forms/Credentials.js:18 +msgid "CREATE CREDENTIAL" +msgstr "" + +#: client/src/forms/Hosts.js:18 +msgid "CREATE HOST" +msgstr "" + +#: client/src/inventories/main.js:120 #: client/src/scheduler/main.js:190 #: client/src/scheduler/main.js:274 #: client/src/scheduler/main.js:97 @@ -373,32 +421,34 @@ msgstr "" #: client/src/app.js:320 #: client/src/helpers/ActivityStream.js:29 +#: client/src/lists/Credentials.js:18 +#: client/src/lists/Credentials.js:19 msgid "CREDENTIALS" msgstr "" -#: client/src/forms/Projects.js:194 +#: client/src/forms/Projects.js:201 msgid "Cache Timeout" msgstr "" -#: client/src/forms/Projects.js:183 +#: client/src/forms/Projects.js:190 msgid "Cache Timeout%s (seconds)%s" msgstr "" -#: client/src/controllers/Projects.js:195 +#: client/src/controllers/Projects.js:193 #: client/src/controllers/Users.js:95 msgid "Call to %s failed. DELETE returned status:" msgstr "" -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:259 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:257 msgid "Call to %s failed. GET status:" msgstr "" -#: client/src/controllers/Projects.js:683 +#: client/src/controllers/Projects.js:698 msgid "Call to %s failed. POST returned status:" msgstr "" -#: client/src/controllers/Projects.js:222 +#: client/src/controllers/Projects.js:220 msgid "Call to %s failed. POST status:" msgstr "" @@ -406,24 +456,25 @@ msgstr "" msgid "Call to %s failed. Return status: %d" msgstr "" -#: client/src/controllers/Projects.js:268 +#: client/src/controllers/Projects.js:266 msgid "Call to get project failed. GET status:" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:105 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:171 -#: client/src/configuration/configuration.controller.js:449 -#: client/src/helpers/Jobs.js:161 -#: client/src/shared/form-generator.js:1707 +#: client/src/configuration/configuration.controller.js:468 +#: client/src/helpers/Jobs.js:157 +#: client/src/shared/form-generator.js:1716 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:12 #: client/src/workflow-results/workflow-results.partial.html:42 msgid "Cancel" msgstr "" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Cancel Not Allowed" msgstr "" -#: client/src/lists/Projects.js:122 +#: client/src/lists/Projects.js:123 msgid "Cancel the SCM update" msgstr "" @@ -431,17 +482,17 @@ msgstr "" msgid "Cancel the job" msgstr "" -#: client/src/controllers/Projects.js:84 +#: client/src/controllers/Projects.js:82 #: client/src/helpers/Projects.js:79 msgid "Canceled. Click for details" msgstr "" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:80 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:81 msgid "Cannot search running job" msgstr "" -#: client/src/forms/Projects.js:82 +#: client/src/forms/Projects.js:83 msgid "Change %s under \"Configure Tower\" to change this location." msgstr "" @@ -449,7 +500,7 @@ msgstr "" msgid "Changes" msgstr "" -#: client/src/shared/form-generator.js:1083 +#: client/src/shared/form-generator.js:1090 msgid "Choose a %s" msgstr "" @@ -461,7 +512,7 @@ msgstr "" msgid "Choose your license file, agree to the End User License Agreement, and click submit." msgstr "" -#: client/src/forms/Projects.js:151 +#: client/src/forms/Projects.js:158 msgid "Clean" msgstr "" @@ -477,19 +528,19 @@ msgstr "" msgid "Click on a row to select it, and click Finished when done. Use the %s button to create a new job template." msgstr "" -#: client/src/forms/Credentials.js:322 +#: client/src/forms/Credentials.js:323 msgid "Client ID" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:262 +#: client/src/notifications/notificationTemplates.form.js:261 msgid "Client Identifier" msgstr "" -#: client/src/forms/Credentials.js:331 +#: client/src/forms/Credentials.js:332 msgid "Client Secret" msgstr "" -#: client/src/shared/form-generator.js:1711 +#: client/src/shared/form-generator.js:1720 msgid "Close" msgstr "" @@ -504,25 +555,20 @@ msgstr "" msgid "CloudForms URL" msgstr "" -#: client/src/job-results/job-results.controller.js:205 -#: client/src/standard-out/standard-out.controller.js:233 -#: client/src/workflow-results/workflow-results.controller.js:136 +#: client/src/job-results/job-results.controller.js:201 +#: client/src/standard-out/standard-out.controller.js:237 +#: client/src/workflow-results/workflow-results.controller.js:139 msgid "Collapse Output" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:298 +#: client/src/notifications/notificationTemplates.form.js:297 msgid "Color can be one of %s." msgstr "" -#: client/src/lists/CompletedJobs.js:18 -msgid "Completed Jobs" -msgstr "" - #: client/src/management-jobs/card/card.partial.html:32 msgid "Configure Notifications" msgstr "" -#: client/src/configuration/configuration.partial.html:10 #: client/src/setup-menu/setup-menu.partial.html:53 msgid "Configure Tower" msgstr "" @@ -531,11 +577,11 @@ msgstr "" msgid "Confirm Password" msgstr "" -#: client/src/configuration/configuration.controller.js:456 +#: client/src/configuration/configuration.controller.js:475 msgid "Confirm Reset" msgstr "" -#: client/src/configuration/configuration.controller.js:465 +#: client/src/configuration/configuration.controller.js:484 msgid "Confirm factory reset" msgstr "" @@ -558,10 +604,6 @@ msgstr "" msgid "Copy template" msgstr "" -#: client/src/forms/Credentials.js:18 -msgid "Create Credential" -msgstr "" - #: client/src/lists/Users.js:46 msgid "Create New" msgstr "" @@ -583,7 +625,7 @@ msgstr "" msgid "Create a new notification template" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:16 +#: client/src/organizations/list/organizations-list.partial.html:21 msgid "Create a new organization" msgstr "" @@ -626,22 +668,16 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:123 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:57 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:24 -#: client/src/lists/Credentials.js:18 -#: client/src/lists/Credentials.js:19 #: client/src/setup-menu/setup-menu.partial.html:22 msgid "Credentials" msgstr "" -#: client/src/controllers/Credentials.js:348 -msgid "Credentials are only shared within an organization. Assign credentials to an organization to delegate credential permissions. The organization cannot be edited after credentials are assigned." -msgstr "" - #: client/src/shared/directives.js:135 msgid "Current Image:" msgstr "" #: client/src/inventory-scripts/inventory-scripts.form.js:53 -#: client/src/inventory-scripts/inventory-scripts.form.js:63 +#: client/src/inventory-scripts/inventory-scripts.form.js:64 msgid "Custom Script" msgstr "" @@ -649,26 +685,31 @@ msgstr "" msgid "DASHBOARD" msgstr "" -#: client/src/controllers/Credentials.js:106 -#: client/src/controllers/Credentials.js:580 -#: client/src/controllers/Projects.js:691 +#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:590 +#: client/src/controllers/Projects.js:706 #: client/src/controllers/Users.js:104 -#: client/src/notifications/notification-templates-list/list.controller.js:189 +#: client/src/notifications/notification-templates-list/list.controller.js:187 #: client/src/organizations/list/organizations-list.controller.js:168 +#: client/src/partials/survey-maker-modal.html:18 msgid "DELETE" msgstr "" +#: client/src/partials/survey-maker-modal.html:83 +msgid "DELETE SURVEY" +msgstr "" + #: client/src/job-detail/job-detail.partial.html:176 #: client/src/job-detail/job-detail.partial.html:179 msgid "DETAILS" msgstr "" -#: client/src/controllers/Credentials.js:103 -#: client/src/controllers/Credentials.js:577 -#: client/src/controllers/Projects.js:203 -#: client/src/controllers/Projects.js:688 +#: client/src/controllers/Credentials.js:101 +#: client/src/controllers/Credentials.js:587 +#: client/src/controllers/Projects.js:201 +#: client/src/controllers/Projects.js:703 #: client/src/controllers/Users.js:101 -#: client/src/helpers/Jobs.js:165 +#: client/src/helpers/Jobs.js:161 #: client/src/inventory-scripts/inventory-scripts.list.js:74 #: client/src/lists/Credentials.js:91 #: client/src/lists/Inventories.js:92 @@ -676,7 +717,7 @@ msgstr "" #: client/src/lists/Teams.js:77 #: client/src/lists/Templates.js:124 #: client/src/lists/Users.js:81 -#: client/src/notifications/notification-templates-list/list.controller.js:186 +#: client/src/notifications/notification-templates-list/list.controller.js:184 #: client/src/notifications/notificationTemplates.list.js:89 #: client/src/organizations/list/organizations-list.controller.js:165 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:13 @@ -700,7 +741,7 @@ msgstr "" msgid "Delete notification" msgstr "" -#: client/src/forms/Projects.js:161 +#: client/src/forms/Projects.js:168 msgid "Delete on Update" msgstr "" @@ -721,15 +762,15 @@ msgstr "" msgid "Delete the job" msgstr "" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "Delete the local repository in its entirety prior to performing an update." msgstr "" -#: client/src/lists/Projects.js:116 +#: client/src/lists/Projects.js:117 msgid "Delete the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:82 +#: client/src/lists/ScheduledJobs.js:83 msgid "Delete the schedule" msgstr "" @@ -737,11 +778,13 @@ msgstr "" msgid "Delete user" msgstr "" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "Depending on the size of the repository this may significantly increase the amount of time required to complete an update." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:52 #: client/src/forms/Credentials.js:41 +#: client/src/forms/Hosts.js:61 #: client/src/forms/Inventories.js:37 #: client/src/forms/JobTemplates.js:42 #: client/src/forms/Organizations.js:33 @@ -760,36 +803,36 @@ msgstr "" msgid "Description" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:141 -#: client/src/notifications/notificationTemplates.form.js:146 -#: client/src/notifications/notificationTemplates.form.js:158 -#: client/src/notifications/notificationTemplates.form.js:163 -#: client/src/notifications/notificationTemplates.form.js:376 +#: client/src/notifications/notificationTemplates.form.js:140 +#: client/src/notifications/notificationTemplates.form.js:145 +#: client/src/notifications/notificationTemplates.form.js:157 +#: client/src/notifications/notificationTemplates.form.js:162 +#: client/src/notifications/notificationTemplates.form.js:375 msgid "Destination Channels" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:371 +#: client/src/notifications/notificationTemplates.form.js:370 msgid "Destination Channels or Users" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:212 -#: client/src/notifications/notificationTemplates.form.js:217 +#: client/src/notifications/notificationTemplates.form.js:211 +#: client/src/notifications/notificationTemplates.form.js:216 msgid "Destination SMS Number" msgstr "" #: client/src/license/license.partial.html:5 -#: client/src/shared/form-generator.js:1493 +#: client/src/shared/form-generator.js:1502 msgid "Details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:70 +#: client/src/configuration/auth-form/configuration-auth.controller.js:72 #: client/src/configuration/configuration.controller.js:181 #: client/src/configuration/configuration.controller.js:243 #: client/src/configuration/system-form/configuration-system.controller.js:49 msgid "Discard changes" msgstr "" -#: client/src/forms/Teams.js:147 +#: client/src/forms/Teams.js:148 msgid "Dissasociate permission from team" msgstr "" @@ -797,7 +840,7 @@ msgstr "" msgid "Dissasociate permission from user" msgstr "" -#: client/src/forms/Credentials.js:385 +#: client/src/forms/Credentials.js:386 #: client/src/helpers/Credentials.js:134 #: client/src/helpers/Credentials.js:270 msgid "Domain Name" @@ -805,16 +848,24 @@ msgstr "" #: client/src/job-detail/job-detail.partial.html:420 #: client/src/job-results/job-results.controller.js:8 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:114 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:134 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:137 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:102 msgid "Download Output" msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:61 +#: client/src/inventory-scripts/inventory-scripts.form.js:62 msgid "Drag and drop your custom inventory script file here or create one in the field to import your custom inventory." msgstr "" +#: client/src/partials/survey-maker-modal.html:76 +msgid "Drop question here to reorder" +msgstr "" + +#: client/src/configuration/configuration.route.js:30 +msgid "EDIT CONFIGURATION" +msgstr "" + #: client/src/management-jobs/scheduler/main.js:95 msgid "EDIT SCHEDULED JOB" msgstr "" @@ -830,15 +881,15 @@ msgstr "" msgid "EVENT SUMMARY" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:40 +#: client/src/shared/smart-search/smart-search.partial.html:39 msgid "EXAMPLES:" msgstr "" -#: client/src/forms/Projects.js:174 +#: client/src/forms/Projects.js:181 msgid "Each time a job runs using this project, perform an update to the local repository prior to starting the job." msgstr "" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:62 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:63 #: client/src/inventory-scripts/inventory-scripts.list.js:57 #: client/src/lists/Credentials.js:72 #: client/src/lists/Inventories.js:78 @@ -851,13 +902,9 @@ msgstr "" msgid "Edit" msgstr "" -#: client/src/configuration/configuration.route.js:30 -msgid "Edit Configuration" -msgstr "" - -#: client/src/forms/JobTemplates.js:482 -#: client/src/forms/Workflows.js:180 -#: client/src/shared/form-generator.js:1723 +#: client/src/forms/JobTemplates.js:486 +#: client/src/forms/Workflows.js:181 +#: client/src/shared/form-generator.js:1732 msgid "Edit Survey" msgstr "" @@ -869,7 +916,7 @@ msgstr "" msgid "Edit credential" msgstr "" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:66 msgid "Edit host" msgstr "" @@ -901,11 +948,11 @@ msgstr "" msgid "Edit the User" msgstr "" -#: client/src/lists/Projects.js:103 +#: client/src/lists/Projects.js:104 msgid "Edit the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:68 +#: client/src/lists/ScheduledJobs.js:69 msgid "Edit the schedule" msgstr "" @@ -913,7 +960,7 @@ msgstr "" msgid "Edit user" msgstr "" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Either you do not have access or the SCM update process completed. Click the %sRefresh%s button to view the latest status." msgstr "" @@ -925,8 +972,8 @@ msgstr "" msgid "Elapsed" msgstr "" -#: client/src/forms/Credentials.js:192 -#: client/src/forms/Users.js:42 +#: client/src/forms/Credentials.js:193 +#: client/src/forms/Users.js:53 msgid "Email" msgstr "" @@ -955,7 +1002,9 @@ msgstr "" msgid "End User License Agreement" msgstr "" -#: client/src/forms/Inventories.js:60 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:64 +#: client/src/forms/Hosts.js:71 +#: 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." msgstr "" @@ -974,28 +1023,28 @@ msgstr "" msgid "Enter the hostname or IP address which corresponds to your VMware vCenter." msgstr "" -#: client/src/configuration/configuration.controller.js:307 -#: client/src/configuration/configuration.controller.js:385 -#: client/src/configuration/configuration.controller.js:419 -#: client/src/configuration/configuration.controller.js:438 -#: client/src/controllers/Projects.js:173 -#: client/src/controllers/Projects.js:194 -#: client/src/controllers/Projects.js:222 -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:258 -#: client/src/controllers/Projects.js:267 -#: client/src/controllers/Projects.js:405 -#: client/src/controllers/Projects.js:599 -#: client/src/controllers/Projects.js:665 -#: client/src/controllers/Projects.js:683 +#: client/src/configuration/configuration.controller.js:318 +#: client/src/configuration/configuration.controller.js:403 +#: client/src/configuration/configuration.controller.js:437 +#: client/src/configuration/configuration.controller.js:457 +#: client/src/controllers/Projects.js:171 +#: client/src/controllers/Projects.js:192 +#: client/src/controllers/Projects.js:220 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:256 +#: client/src/controllers/Projects.js:265 +#: client/src/controllers/Projects.js:403 +#: client/src/controllers/Projects.js:614 +#: client/src/controllers/Projects.js:680 +#: client/src/controllers/Projects.js:698 #: client/src/controllers/Users.js:182 #: client/src/controllers/Users.js:271 #: client/src/controllers/Users.js:339 #: client/src/controllers/Users.js:94 #: client/src/helpers/Credentials.js:418 #: client/src/helpers/Credentials.js:434 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:168 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:187 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:172 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:191 #: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:119 #: client/src/management-jobs/card/card.controller.js:150 #: client/src/management-jobs/card/card.controller.js:240 @@ -1018,7 +1067,7 @@ msgstr "" msgid "Event" msgstr "" -#: client/src/widgets/Stream.js:216 +#: client/src/widgets/Stream.js:222 msgid "Event summary not available" msgstr "" @@ -1027,25 +1076,25 @@ msgid "Events" msgstr "" #: client/src/controllers/Projects.js:423 -#: client/src/controllers/Projects.js:706 +#: client/src/controllers/Projects.js:723 msgid "Example URLs for GIT SCM include:" msgstr "" -#: client/src/controllers/Projects.js:436 -#: client/src/controllers/Projects.js:718 +#: client/src/controllers/Projects.js:438 +#: client/src/controllers/Projects.js:737 msgid "Example URLs for Mercurial SCM include:" msgstr "" -#: client/src/controllers/Projects.js:431 -#: client/src/controllers/Projects.js:713 +#: client/src/controllers/Projects.js:432 +#: client/src/controllers/Projects.js:731 msgid "Example URLs for Subversion SCM include:" msgstr "" #: client/src/job-results/job-results.controller.js:11 -#: client/src/job-results/job-results.controller.js:207 -#: client/src/standard-out/standard-out.controller.js:235 +#: client/src/job-results/job-results.controller.js:203 +#: client/src/standard-out/standard-out.controller.js:239 #: client/src/standard-out/standard-out.controller.js:25 -#: client/src/workflow-results/workflow-results.controller.js:138 +#: client/src/workflow-results/workflow-results.controller.js:141 #: client/src/workflow-results/workflow-results.controller.js:97 msgid "Expand Output" msgstr "" @@ -1058,20 +1107,29 @@ msgstr "" msgid "Explanation" msgstr "" -#: client/src/forms/JobTemplates.js:367 -#: client/src/forms/JobTemplates.js:379 -#: client/src/forms/Workflows.js:72 -#: client/src/forms/Workflows.js:84 +#: client/src/forms/JobTemplates.js:371 +#: client/src/forms/JobTemplates.js:383 +#: client/src/forms/Workflows.js:73 +#: client/src/forms/Workflows.js:85 +#: client/src/inventories/manage/adhoc/adhoc.form.js:125 +#: client/src/inventories/manage/adhoc/adhoc.form.js:137 #: client/src/job-detail/job-detail.partial.html:163 #: client/src/partials/logviewer.html:8 msgid "Extra Variables" msgstr "" +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:104 +msgid "" +"Extra Variables\n" +" \n" +" " +msgstr "" + #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:67 msgid "FAILED" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:48 +#: client/src/shared/smart-search/smart-search.partial.html:45 msgid "FIELDS:" msgstr "" @@ -1100,7 +1158,7 @@ msgstr "" msgid "Failed to create new Credential. POST status:" msgstr "" -#: client/src/controllers/Projects.js:406 +#: client/src/controllers/Projects.js:404 msgid "Failed to create new project. POST returned status:" msgstr "" @@ -1108,11 +1166,11 @@ msgstr "" msgid "Failed to get third-party login types. Returned status:" msgstr "" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:188 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:192 msgid "Failed to retrieve job template extra variables." msgstr "" -#: client/src/controllers/Projects.js:600 +#: client/src/controllers/Projects.js:615 msgid "Failed to retrieve project: %s. GET status:" msgstr "" @@ -1121,11 +1179,11 @@ msgstr "" msgid "Failed to retrieve user: %s. GET status:" msgstr "" -#: client/src/configuration/configuration.controller.js:386 +#: client/src/configuration/configuration.controller.js:404 msgid "Failed to save settings. Returned status:" msgstr "" -#: client/src/configuration/configuration.controller.js:420 +#: client/src/configuration/configuration.controller.js:438 msgid "Failed to save toggle settings. Returned status:" msgstr "" @@ -1133,11 +1191,11 @@ msgstr "" msgid "Failed to update Credential. PUT status:" msgstr "" -#: client/src/controllers/Projects.js:665 +#: client/src/controllers/Projects.js:680 msgid "Failed to update project: %s. PUT status:" msgstr "" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:169 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:173 #: client/src/management-jobs/card/card.controller.js:151 #: client/src/management-jobs/card/card.controller.js:241 msgid "Failed updating job %s with variables. POST returned: %d" @@ -1173,8 +1231,8 @@ msgstr "" msgid "First Run" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:54 -msgid "For additional information on advanced search search syntax please see the Ansible Tower documentation." +#: client/src/shared/smart-search/smart-search.partial.html:51 +msgid "For additional information on advanced search search syntax please see the Ansible Tower documentation." msgstr "" #: client/src/helpers/Credentials.js:143 @@ -1183,15 +1241,17 @@ msgid "For example, %s" msgstr "" #: client/src/notifications/notificationTemplates.form.js:101 -#: client/src/notifications/notificationTemplates.form.js:145 -#: client/src/notifications/notificationTemplates.form.js:162 -#: client/src/notifications/notificationTemplates.form.js:216 -#: client/src/notifications/notificationTemplates.form.js:337 -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:144 +#: client/src/notifications/notificationTemplates.form.js:161 +#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "For example:" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:25 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:34 msgid "For hosts that are part of an external inventory, this flag cannot be changed. It will be set by the inventory sync process." msgstr "" @@ -1215,23 +1275,23 @@ msgstr "" msgid "GROUP" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:102 +#: client/src/configuration/auth-form/configuration-auth.controller.js:104 msgid "GitHub" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:103 +#: client/src/configuration/auth-form/configuration-auth.controller.js:105 msgid "GitHub Org" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:104 +#: client/src/configuration/auth-form/configuration-auth.controller.js:106 msgid "GitHub Team" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:105 +#: client/src/configuration/auth-form/configuration-auth.controller.js:107 msgid "Google OAuth2" msgstr "" -#: client/src/forms/Teams.js:156 +#: client/src/forms/Teams.js:157 #: client/src/forms/Users.js:213 msgid "Grant Permission" msgstr "" @@ -1240,12 +1300,14 @@ msgstr "" msgid "Group all of your content to manage permissions across departments in your company." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:13 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:14 #: client/src/dashboard/hosts/main.js:55 #: client/src/helpers/ActivityStream.js:53 msgid "HOSTS" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:327 +#: client/src/notifications/notificationTemplates.form.js:326 msgid "HTTP Headers" msgstr "" @@ -1253,10 +1315,10 @@ msgstr "" msgid "Hide Activity Stream" msgstr "" -#: client/src/forms/Credentials.js:140 +#: client/src/forms/Credentials.js:141 #: client/src/forms/EventsViewer.js:20 #: client/src/lists/JobEvents.js:73 -#: client/src/notifications/notificationTemplates.form.js:75 +#: client/src/notifications/notificationTemplates.form.js:86 msgid "Host" msgstr "" @@ -1270,10 +1332,19 @@ msgstr "" msgid "Host Config Key" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:29 #: client/src/dashboard/hosts/dashboard-hosts.list.js:54 +#: client/src/forms/Hosts.js:38 msgid "Host Enabled" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:35 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:47 +#: client/src/forms/Hosts.js:44 +#: client/src/forms/Hosts.js:55 +msgid "Host Name" +msgstr "" + #: client/src/job-detail/job-detail.partial.html:269 msgid "Host Status" msgstr "" @@ -1282,6 +1353,11 @@ msgstr "" msgid "Host Summary" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:60 +#: client/src/forms/Hosts.js:78 +msgid "Host Variables" +msgstr "" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:25 #: client/src/dashboard/counts/dashboard-counts.directive.js:39 #: client/src/job-detail/job-detail.partial.html:349 @@ -1313,7 +1389,10 @@ msgid "INITIATED BY" msgstr "" #: client/src/helpers/ActivityStream.js:26 -#: client/src/inventories/main.js:298 +#: client/src/inventories/main.js:301 +#: client/src/inventories/main.js:51 +#: client/src/lists/Inventories.js:16 +#: client/src/lists/Inventories.js:17 #: client/src/main-menu/main-menu.partial.html:104 #: client/src/main-menu/main-menu.partial.html:27 #: client/src/organizations/linkout/organizations-linkout.route.js:143 @@ -1325,15 +1404,16 @@ msgid "INVENTORY SCRIPT" msgstr "" #: client/src/helpers/ActivityStream.js:47 +#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/inventory-scripts/main.js:66 msgid "INVENTORY SCRIPTS" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:360 +#: client/src/notifications/notificationTemplates.form.js:359 msgid "IRC Nick" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:349 +#: client/src/notifications/notificationTemplates.form.js:348 msgid "IRC Server Address" msgstr "" @@ -1372,7 +1452,9 @@ msgstr "" msgid "If you are ready to upgrade, please contact us by clicking the button below" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:23 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:32 msgid "Indicates if a host is available and should be included in running jobs." msgstr "" @@ -1389,8 +1471,8 @@ msgstr "" msgid "Invalid License" msgstr "" -#: client/src/license/license.controller.js:69 -#: client/src/license/license.controller.js:76 +#: client/src/license/license.controller.js:70 +#: client/src/license/license.controller.js:77 msgid "Invalid file format. Please upload valid JSON." msgstr "" @@ -1402,8 +1484,6 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:51 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:26 #: client/src/dashboard/counts/dashboard-counts.directive.js:50 -#: client/src/lists/Inventories.js:16 -#: client/src/lists/Inventories.js:17 msgid "Inventories" msgstr "" @@ -1418,7 +1498,6 @@ msgid "Inventory" msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:27 -#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/setup-menu/setup-menu.partial.html:34 msgid "Inventory Scripts" msgstr "" @@ -1431,7 +1510,7 @@ msgstr "" msgid "Inventory Sync Failures" msgstr "" -#: client/src/forms/Inventories.js:67 +#: client/src/forms/Inventories.js:68 msgid "Inventory Variables" msgstr "" @@ -1440,6 +1519,10 @@ msgstr "" msgid "Item" msgstr "" +#: client/src/lists/JobEvents.js:15 +msgid "JOB EVENTS" +msgstr "" + #: client/src/dashboard/graphs/dashboard-graphs.partial.html:4 msgid "JOB STATUS" msgstr "" @@ -1448,22 +1531,22 @@ msgstr "" msgid "JOB TEMPLATE" msgstr "" -#: client/src/organizations/linkout/organizations-linkout.route.js:252 +#: client/src/lists/PortalJobTemplates.js:15 +#: client/src/lists/PortalJobTemplates.js:16 +#: client/src/organizations/linkout/organizations-linkout.route.js:254 msgid "JOB TEMPLATES" msgstr "" #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:113 #: client/src/helpers/ActivityStream.js:44 #: client/src/jobs/jobs.route.js:15 +#: client/src/lists/PortalJobs.js:15 +#: client/src/lists/PortalJobs.js:19 #: client/src/main-menu/main-menu.partial.html:122 #: client/src/main-menu/main-menu.partial.html:43 msgid "JOBS" msgstr "" -#: client/src/lists/JobEvents.js:15 -msgid "Job Events" -msgstr "" - #: client/src/forms/JobTemplates.js:252 #: client/src/forms/JobTemplates.js:260 #: client/src/forms/WorkflowMaker.js:134 @@ -1478,9 +1561,7 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:35 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:97 -#: client/src/lists/PortalJobTemplates.js:15 -#: client/src/lists/PortalJobTemplates.js:16 -#: client/src/organizations/linkout/organizations-linkout.route.js:264 +#: client/src/organizations/linkout/organizations-linkout.route.js:266 msgid "Job Templates" msgstr "" @@ -1496,11 +1577,10 @@ msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:28 #: client/src/configuration/configuration.partial.html:16 #: client/src/jobs/jobs.partial.html:7 -#: client/src/lists/PortalJobs.js:15 -#: client/src/lists/PortalJobs.js:19 msgid "Jobs" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:63 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:90 #: client/src/shared/smart-search/smart-search.partial.html:14 msgid "Key" @@ -1511,7 +1591,7 @@ msgstr "" msgid "LAUNCH TYPE" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:106 +#: client/src/configuration/auth-form/configuration-auth.controller.js:108 msgid "LDAP" msgstr "" @@ -1527,14 +1607,10 @@ msgstr "" msgid "LOG OUT" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:273 -msgid "Label to be shown with notification" -msgstr "" - -#: client/src/forms/JobTemplates.js:355 -#: client/src/forms/JobTemplates.js:360 -#: client/src/forms/Workflows.js:60 -#: client/src/forms/Workflows.js:65 +#: client/src/forms/JobTemplates.js:359 +#: client/src/forms/JobTemplates.js:364 +#: client/src/forms/Workflows.js:61 +#: client/src/forms/Workflows.js:66 #: client/src/lists/AllJobs.js:76 #: client/src/lists/Templates.js:47 msgid "Labels" @@ -1552,7 +1628,7 @@ msgstr "" #: client/src/lists/PortalJobTemplates.js:39 #: client/src/lists/Templates.js:84 -#: client/src/shared/form-generator.js:1715 +#: client/src/shared/form-generator.js:1724 msgid "Launch" msgstr "" @@ -1618,7 +1694,7 @@ msgstr "" #: client/src/job-detail/job-detail.partial.html:316 #: client/src/job-detail/job-detail.partial.html:371 -#: client/src/shared/form-generator.js:1991 +#: client/src/shared/form-generator.js:2002 msgid "Loading..." msgstr "" @@ -1634,6 +1710,7 @@ msgstr "" msgid "Logging" msgstr "" +#: client/src/management-jobs/card/card.partial.html:4 #: client/src/management-jobs/card/card.route.js:21 msgid "MANAGEMENT JOBS" msgstr "" @@ -1642,7 +1719,7 @@ msgstr "" msgid "MY VIEW" msgstr "" -#: client/src/forms/Credentials.js:68 +#: client/src/forms/Credentials.js:69 msgid "Machine" msgstr "" @@ -1660,17 +1737,16 @@ msgstr "" msgid "Management Certificate" msgstr "" -#: client/src/management-jobs/card/card.partial.html:4 #: client/src/setup-menu/setup-menu.partial.html:28 msgid "Management Jobs" msgstr "" -#: client/src/controllers/Projects.js:93 +#: client/src/controllers/Projects.js:91 msgid "Manual projects do not require a schedule" msgstr "" -#: client/src/controllers/Projects.js:589 -#: client/src/controllers/Projects.js:92 +#: client/src/controllers/Projects.js:599 +#: client/src/controllers/Projects.js:90 msgid "Manual projects do not require an SCM update" msgstr "" @@ -1713,6 +1789,42 @@ msgstr "" msgid "NAME" msgstr "" +#: client/src/inventory-scripts/inventory-scripts.form.js:16 +msgid "NEW CUSTOM INVENTORY" +msgstr "" + +#: client/src/forms/Inventories.js:18 +msgid "NEW INVENTORY" +msgstr "" + +#: client/src/forms/JobTemplates.js:20 +msgid "NEW JOB TEMPLATE" +msgstr "" + +#: client/src/notifications/notificationTemplates.form.js:16 +msgid "NEW NOTIFICATION TEMPLATE" +msgstr "" + +#: client/src/forms/Organizations.js:18 +msgid "NEW ORGANIZATION" +msgstr "" + +#: client/src/forms/Projects.js:18 +msgid "NEW PROJECT" +msgstr "" + +#: client/src/forms/Teams.js:18 +msgid "NEW TEAM" +msgstr "" + +#: client/src/forms/Users.js:18 +msgid "NEW USER" +msgstr "" + +#: client/src/forms/Workflows.js:19 +msgid "NEW WORKFLOW JOB TEMPLATE" +msgstr "" + #: client/src/dashboard/hosts/dashboard-hosts.list.js:18 msgid "NO HOSTS FOUND" msgstr "" @@ -1726,6 +1838,7 @@ msgid "NOTIFICATION TEMPLATE" msgstr "" #: client/src/helpers/ActivityStream.js:38 +#: client/src/notifications/notificationTemplates.list.js:14 msgid "NOTIFICATION TEMPLATES" msgstr "" @@ -1735,6 +1848,7 @@ msgstr "" msgid "NOTIFICATIONS" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:36 #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:14 #: client/src/dashboard/lists/jobs/jobs-list.partial.html:13 #: client/src/forms/Credentials.js:34 @@ -1743,7 +1857,7 @@ msgstr "" #: client/src/forms/LogViewerStatus.js:23 #: client/src/forms/Organizations.js:26 #: client/src/forms/Projects.js:31 -#: client/src/forms/Teams.js:125 +#: client/src/forms/Teams.js:126 #: client/src/forms/Teams.js:27 #: client/src/forms/Users.js:141 #: client/src/forms/Users.js:167 @@ -1770,7 +1884,7 @@ msgstr "" msgid "Name" msgstr "" -#: client/src/forms/Credentials.js:72 +#: client/src/forms/Credentials.js:73 msgid "Network" msgstr "" @@ -1784,47 +1898,11 @@ msgstr "" msgid "Network credentials are used by Ansible networking modules to connect to and manage networking devices." msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:16 -msgid "New Custom Inventory" -msgstr "" - -#: client/src/forms/Inventories.js:18 -msgid "New Inventory" -msgstr "" - -#: client/src/forms/JobTemplates.js:20 -msgid "New Job Template" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:16 -msgid "New Notification Template" -msgstr "" - -#: client/src/forms/Organizations.js:18 -msgid "New Organization" -msgstr "" - -#: client/src/forms/Projects.js:18 -msgid "New Project" -msgstr "" - -#: client/src/forms/Teams.js:18 -msgid "New Team" -msgstr "" - -#: client/src/forms/Users.js:18 -msgid "New User" -msgstr "" - -#: client/src/forms/Workflows.js:19 -msgid "New Workflow Job Template" -msgstr "" - #: client/src/controllers/Users.js:174 msgid "New user successfully created!" msgstr "" -#: client/src/lists/ScheduledJobs.js:52 +#: client/src/lists/ScheduledJobs.js:53 #: client/src/lists/Schedules.js:45 msgid "Next Run" msgstr "" @@ -1833,7 +1911,7 @@ msgstr "" msgid "No Credentials Have Been Created" msgstr "" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "No SCM Configuration" msgstr "" @@ -1845,7 +1923,7 @@ msgstr "" msgid "No Teams exist" msgstr "" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "No Updates Available" msgstr "" @@ -1885,16 +1963,16 @@ msgstr "" msgid "No matching tasks" msgstr "" -#: client/src/forms/Teams.js:122 +#: client/src/forms/Teams.js:123 #: client/src/forms/Users.js:190 msgid "No permissions have been granted" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:88 +#: client/src/notifications/notification-templates-list/list.controller.js:86 msgid "No recent notifications." msgstr "" -#: client/src/shared/form-generator.js:1885 +#: client/src/shared/form-generator.js:1896 msgid "No records matched your search." msgstr "" @@ -1906,20 +1984,23 @@ msgstr "" msgid "Normal User" msgstr "" -#: client/src/controllers/Projects.js:95 +#: client/src/controllers/Projects.js:93 msgid "Not configured for SCM" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:296 +#: client/src/notifications/notificationTemplates.form.js:295 msgid "Notification Color" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:115 +#: client/src/notifications/notification-templates-list/list.controller.js:113 msgid "Notification Failed." msgstr "" +#: client/src/notifications/notificationTemplates.form.js:284 +msgid "Notification Label" +msgstr "" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:29 -#: client/src/notifications/notificationTemplates.list.js:14 msgid "Notification Templates" msgstr "" @@ -1929,19 +2010,23 @@ msgstr "" msgid "Notifications" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:309 +#: client/src/notifications/notificationTemplates.form.js:308 msgid "Notify Channel" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:201 +#: client/src/notifications/notificationTemplates.form.js:200 msgid "Number associated with the \"Messaging Service\" in Twilio." msgstr "" -#: client/src/shared/form-generator.js:552 +#: client/src/partials/survey-maker-modal.html:27 +#: client/src/shared/form-generator.js:553 +#: client/src/shared/generator-helpers.js:525 msgid "OFF" msgstr "" -#: client/src/shared/form-generator.js:550 +#: client/src/partials/survey-maker-modal.html:26 +#: client/src/shared/form-generator.js:551 +#: client/src/shared/generator-helpers.js:521 msgid "ON" msgstr "" @@ -1967,17 +2052,17 @@ msgstr "" msgid "On Success" msgstr "" -#: client/src/forms/Credentials.js:380 +#: client/src/forms/Credentials.js:381 msgid "OpenStack domains define administrative boundaries. It is only needed for Keystone v3 authentication URLs. Common scenarios include:" msgstr "" -#: client/src/forms/JobTemplates.js:362 -#: client/src/forms/Workflows.js:67 +#: client/src/forms/JobTemplates.js:366 +#: client/src/forms/Workflows.js:68 msgid "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:288 -#: client/src/notifications/notificationTemplates.form.js:395 +#: client/src/notifications/notificationTemplates.form.js:394 #: client/src/partials/logviewer.html:7 msgid "Options" msgstr "" @@ -1988,7 +2073,7 @@ msgstr "" #: client/src/forms/Projects.js:43 #: client/src/forms/Projects.js:49 #: client/src/forms/Teams.js:39 -#: client/src/forms/Users.js:59 +#: client/src/forms/Users.js:42 #: client/src/forms/Workflows.js:47 #: client/src/forms/Workflows.js:53 #: client/src/inventory-scripts/inventory-scripts.form.js:40 @@ -2005,7 +2090,7 @@ msgstr "" msgid "Organizations" msgstr "" -#: client/src/forms/Credentials.js:80 +#: client/src/forms/Credentials.js:81 msgid "Others (Cloud Providers)" msgstr "" @@ -2017,9 +2102,13 @@ msgstr "" msgid "PASSWORD" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:45 -#: client/src/shared/form-generator.js:1891 -#: client/src/shared/list-generator/list-generator.factory.js:246 +#: client/src/partials/survey-maker-modal.html:45 +msgid "PLEASE ADD A SURVEY PROMPT ON THE LEFT." +msgstr "" + +#: client/src/organizations/list/organizations-list.partial.html:48 +#: client/src/shared/form-generator.js:1902 +#: client/src/shared/list-generator/list-generator.factory.js:242 msgid "PLEASE ADD ITEMS TO THIS LIST" msgstr "" @@ -2027,12 +2116,18 @@ msgstr "" msgid "PORTAL MODE" msgstr "" +#: client/src/partials/survey-maker-modal.html:43 +msgid "PREVIEW" +msgstr "" + #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:73 msgid "PROJECT" msgstr "" #: client/src/app.js:296 #: client/src/helpers/ActivityStream.js:23 +#: client/src/lists/Projects.js:16 +#: client/src/lists/Projects.js:17 #: client/src/main-menu/main-menu.partial.html:19 #: client/src/main-menu/main-menu.partial.html:95 #: client/src/organizations/linkout/organizations-linkout.route.js:194 @@ -2046,16 +2141,20 @@ msgid "" " {{last}}" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:240 +#: client/src/notifications/notificationTemplates.form.js:239 msgid "Pagerduty subdomain" msgstr "" -#: client/src/forms/JobTemplates.js:373 -#: client/src/forms/Workflows.js:78 +#: client/src/forms/JobTemplates.js:377 +#: client/src/forms/Workflows.js:79 msgid "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." msgstr "" -#: client/src/forms/Credentials.js:227 +#: client/src/inventories/manage/adhoc/adhoc.form.js:131 +msgid "Pass extra command line variables. This is the %s or %s command line parameter for %s. Provide key/value pairs using either YAML or JSON." +msgstr "" + +#: client/src/forms/Credentials.js:228 #: client/src/forms/Users.js:70 #: client/src/helpers/Credentials.js:120 #: client/src/helpers/Credentials.js:128 @@ -2113,19 +2212,19 @@ msgstr "" msgid "Period" msgstr "" -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 #: client/src/controllers/Users.js:141 #: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 msgid "Permission Error" msgstr "" -#: client/src/forms/Credentials.js:440 -#: client/src/forms/Inventories.js:96 -#: client/src/forms/JobTemplates.js:419 -#: client/src/forms/Projects.js:228 -#: client/src/forms/Teams.js:118 +#: client/src/forms/Credentials.js:441 +#: client/src/forms/Inventories.js:97 +#: client/src/forms/JobTemplates.js:423 +#: client/src/forms/Projects.js:235 +#: client/src/forms/Teams.js:119 #: client/src/forms/Users.js:186 -#: client/src/forms/Workflows.js:117 +#: client/src/forms/Workflows.js:118 msgid "Permissions" msgstr "" @@ -2139,7 +2238,7 @@ msgstr "" msgid "Playbook" msgstr "" -#: client/src/forms/Projects.js:89 +#: client/src/forms/Projects.js:90 msgid "Playbook Directory" msgstr "" @@ -2167,20 +2266,24 @@ msgstr "" msgid "Please click the button below to visit Ansible's website to get a Tower license key." msgstr "" -#: client/src/shared/form-generator.js:836 -#: client/src/shared/form-generator.js:950 +#: client/src/shared/form-generator.js:842 +#: client/src/shared/form-generator.js:956 msgid "Please enter a URL that begins with ssh, http or https. The URL may not contain the '@' character." msgstr "" -#: client/src/shared/form-generator.js:1188 +#: client/src/partials/inventory-add.html:11 +msgid "Please enter a name for this job template copy." +msgstr "" + +#: client/src/shared/form-generator.js:1195 msgid "Please enter a number greater than %d and less than %d." msgstr "" -#: client/src/shared/form-generator.js:1190 +#: client/src/shared/form-generator.js:1197 msgid "Please enter a number greater than %d." msgstr "" -#: client/src/shared/form-generator.js:1182 +#: client/src/shared/form-generator.js:1189 msgid "Please enter a number." msgstr "" @@ -2192,14 +2295,14 @@ msgstr "" msgid "Please enter a username." msgstr "" -#: client/src/shared/form-generator.js:826 -#: client/src/shared/form-generator.js:940 +#: client/src/shared/form-generator.js:832 +#: client/src/shared/form-generator.js:946 msgid "Please enter a valid email address." msgstr "" -#: client/src/shared/form-generator.js:1042 -#: client/src/shared/form-generator.js:821 -#: client/src/shared/form-generator.js:935 +#: client/src/shared/form-generator.js:1049 +#: client/src/shared/form-generator.js:827 +#: client/src/shared/form-generator.js:941 msgid "Please enter a value." msgstr "" @@ -2212,16 +2315,16 @@ msgid "Please save before adding notifications" msgstr "" #: client/src/forms/Organizations.js:59 -#: client/src/forms/Teams.js:70 +#: client/src/forms/Teams.js:71 msgid "Please save before adding users" msgstr "" -#: client/src/controllers/Credentials.js:160 -#: client/src/forms/Inventories.js:92 -#: client/src/forms/JobTemplates.js:412 -#: client/src/forms/Projects.js:220 -#: client/src/forms/Teams.js:114 -#: client/src/forms/Workflows.js:110 +#: client/src/controllers/Credentials.js:159 +#: client/src/forms/Inventories.js:93 +#: client/src/forms/JobTemplates.js:416 +#: client/src/forms/Projects.js:227 +#: client/src/forms/Teams.js:115 +#: client/src/forms/Workflows.js:111 msgid "Please save before assigning permissions" msgstr "" @@ -2234,7 +2337,7 @@ msgstr "" msgid "Please save before assigning to teams" msgstr "" -#: client/src/forms/Workflows.js:186 +#: client/src/forms/Workflows.js:187 msgid "Please save before defining the workflow graph" msgstr "" @@ -2254,11 +2357,11 @@ msgstr "" msgid "Please select a Machine Credential or check the Prompt on launch option." msgstr "" -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "Please select a number between" msgstr "" -#: client/src/shared/form-generator.js:1219 +#: client/src/shared/form-generator.js:1226 msgid "Please select a number." msgstr "" @@ -2266,10 +2369,10 @@ msgstr "" msgid "Please select a task below to view its associated hosts" msgstr "" -#: client/src/shared/form-generator.js:1110 -#: client/src/shared/form-generator.js:1179 -#: client/src/shared/form-generator.js:1299 -#: client/src/shared/form-generator.js:1406 +#: client/src/shared/form-generator.js:1117 +#: client/src/shared/form-generator.js:1186 +#: client/src/shared/form-generator.js:1306 +#: client/src/shared/form-generator.js:1415 msgid "Please select a value." msgstr "" @@ -2281,7 +2384,7 @@ msgstr "" msgid "Please select an Inventory." msgstr "" -#: client/src/shared/form-generator.js:1216 +#: client/src/shared/form-generator.js:1223 msgid "Please select at least one value." msgstr "" @@ -2289,22 +2392,26 @@ msgstr "" msgid "Please select resources from the lists below." msgstr "" +#: client/src/controllers/Credentials.js:347 +msgid "Populate the organization field in the form below in order to set permissions." +msgstr "" + #: client/src/notifications/shared/type-change.service.js:27 msgid "Port" msgstr "" -#: client/src/forms/Credentials.js:258 +#: client/src/forms/Credentials.js:259 #: client/src/helpers/Credentials.js:36 #: client/src/helpers/Credentials.js:60 msgid "Private Key" msgstr "" -#: client/src/forms/Credentials.js:265 +#: client/src/forms/Credentials.js:266 msgid "Private Key Passphrase" msgstr "" -#: client/src/forms/Credentials.js:280 -#: client/src/forms/Credentials.js:284 +#: client/src/forms/Credentials.js:281 +#: client/src/forms/Credentials.js:285 msgid "Privilege Escalation" msgstr "" @@ -2331,16 +2438,16 @@ msgstr "" msgid "Project (Tenant Name)" msgstr "" -#: client/src/forms/Projects.js:75 -#: client/src/forms/Projects.js:83 +#: client/src/forms/Projects.js:76 +#: client/src/forms/Projects.js:84 msgid "Project Base Path" msgstr "" -#: client/src/forms/Credentials.js:366 +#: client/src/forms/Credentials.js:367 msgid "Project Name" msgstr "" -#: client/src/forms/Projects.js:100 +#: client/src/forms/Projects.js:101 msgid "Project Path" msgstr "" @@ -2348,7 +2455,7 @@ msgstr "" msgid "Project Sync Failures" msgstr "" -#: client/src/controllers/Projects.js:174 +#: client/src/controllers/Projects.js:172 msgid "Project lookup failed. GET returned:" msgstr "" @@ -2356,8 +2463,6 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:46 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:31 #: client/src/dashboard/counts/dashboard-counts.directive.js:61 -#: client/src/lists/Projects.js:16 -#: client/src/lists/Projects.js:17 msgid "Projects" msgstr "" @@ -2365,12 +2470,16 @@ msgstr "" #: client/src/forms/JobTemplates.js:234 #: client/src/forms/JobTemplates.js:265 #: client/src/forms/JobTemplates.js:283 -#: client/src/forms/JobTemplates.js:384 +#: client/src/forms/JobTemplates.js:388 #: client/src/forms/JobTemplates.js:68 #: client/src/forms/JobTemplates.js:94 msgid "Prompt on launch" msgstr "" +#: client/src/partials/subhome.html:6 +msgid "Properties" +msgstr "" + #: client/src/forms/JobTemplates.js:257 #: client/src/forms/JobTemplates.js:275 #: client/src/forms/WorkflowMaker.js:139 @@ -2378,6 +2487,11 @@ msgstr "" msgid "Provide a comma separated list of tags." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:40 +#: client/src/forms/Hosts.js:48 +msgid "Provide a host name, ip address, or ip address:port. Examples include:" +msgstr "" + #: client/src/forms/JobTemplates.js:225 #: client/src/forms/WorkflowMaker.js:123 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 %s %s or %s" @@ -2392,7 +2506,7 @@ msgstr "" msgid "Queued. Click for details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:107 +#: client/src/configuration/auth-form/configuration-auth.controller.js:109 msgid "RADIUS" msgstr "" @@ -2425,7 +2539,7 @@ msgstr "" msgid "REGIONS" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:51 +#: client/src/shared/smart-search/smart-search.partial.html:48 msgid "RELATED FIELDS:" msgstr "" @@ -2482,12 +2596,12 @@ msgid "Relaunch using the same parameters" msgstr "" #: client/src/access/add-rbac-user-team/rbac-selected-list.directive.js:37 -#: client/src/forms/Teams.js:143 +#: client/src/forms/Teams.js:144 #: client/src/forms/Users.js:221 msgid "Remove" msgstr "" -#: client/src/forms/Projects.js:153 +#: client/src/forms/Projects.js:160 msgid "Remove any local modifications prior to performing an update." msgstr "" @@ -2499,10 +2613,6 @@ msgstr "" msgid "Request License" msgstr "" -#: client/src/shared/form-generator.js:681 -msgid "Reset" -msgstr "" - #: client/src/forms/EventsViewer.js:62 #: client/src/forms/EventsViewer.js:66 #: client/src/forms/EventsViewer.js:69 @@ -2518,6 +2628,10 @@ msgstr "" msgid "Return Code" msgstr "" +#: client/src/shared/form-generator.js:682 +msgid "Revert" +msgstr "" + #: client/src/configuration/auth-form/sub-forms/auth-azure.form.js:46 #: client/src/configuration/auth-form/sub-forms/auth-github-org.form.js:50 #: client/src/configuration/auth-form/sub-forms/auth-github-team.form.js:50 @@ -2525,10 +2639,10 @@ msgstr "" #: client/src/configuration/auth-form/sub-forms/auth-google-oauth2.form.js:58 #: client/src/configuration/auth-form/sub-forms/auth-ldap.form.js:88 #: client/src/configuration/auth-form/sub-forms/auth-radius.form.js:33 -#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:82 +#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:86 #: client/src/configuration/jobs-form/configuration-jobs.form.js:63 #: client/src/configuration/system-form/sub-forms/system-activity-stream.form.js:25 -#: client/src/configuration/system-form/sub-forms/system-logging.form.js:52 +#: client/src/configuration/system-form/sub-forms/system-logging.form.js:51 #: client/src/configuration/system-form/sub-forms/system-misc.form.js:29 #: client/src/configuration/ui-form/configuration-ui.form.js:35 msgid "Revert all to default" @@ -2538,19 +2652,19 @@ msgstr "" msgid "Revision" msgstr "" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "Revision #" msgstr "" -#: client/src/forms/Credentials.js:462 +#: client/src/forms/Credentials.js:463 #: client/src/forms/EventsViewer.js:36 -#: client/src/forms/Inventories.js:121 +#: client/src/forms/Inventories.js:122 #: client/src/forms/Organizations.js:88 -#: client/src/forms/Projects.js:250 -#: client/src/forms/Teams.js:136 -#: client/src/forms/Teams.js:99 +#: client/src/forms/Projects.js:257 +#: client/src/forms/Teams.js:100 +#: client/src/forms/Teams.js:137 #: client/src/forms/Users.js:204 -#: client/src/forms/Workflows.js:141 +#: client/src/forms/Workflows.js:142 msgid "Role" msgstr "" @@ -2558,36 +2672,45 @@ msgstr "" msgid "Running! Click for details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:108 +#: client/src/configuration/auth-form/configuration-auth.controller.js:110 msgid "SAML" msgstr "" +#: client/src/partials/survey-maker-modal.html:86 +msgid "SAVE" +msgstr "" + #: client/src/scheduler/main.js:314 msgid "SCHEDULED" msgstr "" +#: client/src/lists/ScheduledJobs.js:15 +msgid "SCHEDULED JOBS" +msgstr "" + #: client/src/helpers/ActivityStream.js:50 -#: client/src/inventories/main.js:59 +#: client/src/inventories/main.js:103 +#: client/src/inventories/main.js:62 #: client/src/management-jobs/scheduler/main.js:26 +#: client/src/management-jobs/scheduler/main.js:32 #: client/src/scheduler/main.js:129 +#: client/src/scheduler/main.js:167 #: client/src/scheduler/main.js:219 +#: client/src/scheduler/main.js:257 #: client/src/scheduler/main.js:36 +#: client/src/scheduler/main.js:74 msgid "SCHEDULES" msgstr "" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "SCM Branch" msgstr "" -#: client/src/forms/Projects.js:154 +#: client/src/forms/Projects.js:161 msgid "SCM Clean" msgstr "" -#: client/src/forms/Projects.js:130 -msgid "SCM Credential" -msgstr "" - -#: client/src/forms/Projects.js:165 +#: client/src/forms/Projects.js:172 msgid "SCM Delete" msgstr "" @@ -2596,25 +2719,25 @@ msgstr "" msgid "SCM Private Key" msgstr "" -#: client/src/forms/Projects.js:56 +#: client/src/forms/Projects.js:57 msgid "SCM Type" msgstr "" #: client/src/dashboard/graphs/dashboard-graphs.partial.html:49 -#: client/src/forms/Projects.js:175 +#: client/src/forms/Projects.js:182 msgid "SCM Update" msgstr "" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "SCM Update Cancel" msgstr "" -#: client/src/forms/Projects.js:145 +#: client/src/forms/Projects.js:152 msgid "SCM Update Options" msgstr "" -#: client/src/controllers/Projects.js:585 -#: client/src/controllers/Projects.js:88 +#: client/src/controllers/Projects.js:595 +#: client/src/controllers/Projects.js:86 msgid "SCM update currently running" msgstr "" @@ -2644,16 +2767,16 @@ msgstr "" msgid "SSH Key" msgstr "" -#: client/src/forms/Credentials.js:256 +#: client/src/forms/Credentials.js:257 msgid "SSH key description" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:388 +#: client/src/notifications/notificationTemplates.form.js:387 msgid "SSL Connection" msgstr "" #: client/src/job-detail/job-detail.partial.html:414 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:108 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:128 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:131 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:96 msgid "STANDARD OUT" @@ -2671,8 +2794,8 @@ msgstr "" msgid "STATUS" msgstr "" -#: client/src/forms/Credentials.js:120 -#: client/src/forms/Credentials.js:128 +#: client/src/forms/Credentials.js:121 +#: client/src/forms/Credentials.js:129 msgid "STS Token" msgstr "" @@ -2689,12 +2812,13 @@ msgstr "" msgid "Satellite 6 URL" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:110 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:176 -#: client/src/shared/form-generator.js:1699 +#: client/src/shared/form-generator.js:1708 msgid "Save" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:81 +#: client/src/configuration/auth-form/configuration-auth.controller.js:83 #: client/src/configuration/configuration.controller.js:192 #: client/src/configuration/configuration.controller.js:251 #: client/src/configuration/system-form/configuration-system.controller.js:60 @@ -2706,6 +2830,7 @@ msgid "Save successful!" msgstr "" #: client/src/lists/Templates.js:92 +#: client/src/partials/subhome.html:10 msgid "Schedule" msgstr "" @@ -2713,7 +2838,7 @@ msgstr "" msgid "Schedule Management Job" msgstr "" -#: client/src/controllers/Projects.js:80 +#: client/src/controllers/Projects.js:78 msgid "Schedule future SCM updates" msgstr "" @@ -2721,38 +2846,29 @@ msgstr "" msgid "Schedule future job template runs" msgstr "" -#: client/src/lists/ScheduledJobs.js:15 -msgid "Scheduled Jobs" -msgstr "" - #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:32 -#: client/src/inventories/main.js:100 #: client/src/jobs/jobs.partial.html:10 -#: client/src/management-jobs/scheduler/main.js:32 -#: client/src/scheduler/main.js:167 -#: client/src/scheduler/main.js:257 -#: client/src/scheduler/main.js:74 msgid "Schedules" msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:62 +#: client/src/inventory-scripts/inventory-scripts.form.js:63 msgid "Script must begin with a hashbang sequence: i.e.... %s" msgstr "" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:83 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:84 msgid "Search" msgstr "" -#: client/src/forms/Credentials.js:105 +#: client/src/forms/Credentials.js:106 msgid "Secret Key" msgstr "" -#: client/src/forms/Credentials.js:125 +#: client/src/forms/Credentials.js:126 msgid "Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users." msgstr "" -#: client/src/shared/form-generator.js:1703 +#: client/src/shared/form-generator.js:1712 msgid "Select" msgstr "" @@ -2760,20 +2876,20 @@ msgstr "" msgid "Select a role" msgstr "" -#: client/src/configuration/jobs-form/configuration-jobs.controller.js:90 -#: client/src/configuration/ui-form/configuration-ui.controller.js:85 +#: client/src/configuration/jobs-form/configuration-jobs.controller.js:93 +#: client/src/configuration/ui-form/configuration-ui.controller.js:95 msgid "Select commands" msgstr "" -#: client/src/forms/Projects.js:98 +#: client/src/forms/Projects.js:99 msgid "Select from the list of directories found in the Project Base Path. Together the base path and the playbook directory provide the full path used to locate playbooks." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:230 +#: client/src/configuration/auth-form/configuration-auth.controller.js:256 msgid "Select group types" msgstr "" -#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:25 +#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:24 msgid "Select roles" msgstr "" @@ -2795,7 +2911,7 @@ msgstr "" msgid "Select the project containing the playbook you want this job to execute." msgstr "" -#: client/src/configuration/system-form/configuration-system.controller.js:170 +#: client/src/configuration/system-form/configuration-system.controller.js:177 msgid "Select types" msgstr "" @@ -2803,7 +2919,7 @@ msgstr "" 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:86 +#: client/src/notifications/notificationTemplates.form.js:114 msgid "Sender Email" msgstr "" @@ -2829,7 +2945,7 @@ msgstr "" msgid "Settings" msgstr "" -#: client/src/shared/form-generator.js:851 +#: client/src/shared/form-generator.js:857 msgid "Show" msgstr "" @@ -2861,7 +2977,11 @@ msgstr "" msgid "Skip tags are useful when you have a large playbook, and you want to skip specific parts of a play or task." msgstr "" -#: client/src/forms/Credentials.js:76 +#: client/src/partials/subhome.html:8 +msgid "Source" +msgstr "" + +#: client/src/forms/Credentials.js:77 msgid "Source Control" msgstr "" @@ -2869,7 +2989,7 @@ msgstr "" msgid "Source Details" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:199 +#: client/src/notifications/notificationTemplates.form.js:198 msgid "Source Phone Number" msgstr "" @@ -2877,11 +2997,11 @@ msgstr "" msgid "Source Vars" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:335 msgid "Specify HTTP Headers in JSON format" msgstr "" -#: client/src/forms/Credentials.js:286 +#: client/src/forms/Credentials.js:287 msgid "Specify a method for %s operations. This is equivalent to specifying the %s parameter, where %s could be %s" msgstr "" @@ -2910,8 +3030,8 @@ msgstr "" msgid "Start a job using this template" msgstr "" -#: client/src/controllers/Projects.js:582 -#: client/src/controllers/Projects.js:79 +#: client/src/controllers/Projects.js:592 +#: client/src/controllers/Projects.js:77 msgid "Start an SCM update" msgstr "" @@ -2927,7 +3047,7 @@ msgstr "" #: client/src/forms/LogViewerStatus.js:28 #: client/src/job-detail/job-detail.partial.html:26 #: client/src/lists/JobEvents.js:51 -#: client/src/notifications/notification-templates-list/list.controller.js:73 +#: client/src/notifications/notification-templates-list/list.controller.js:71 #: client/src/partials/logviewer.html:4 msgid "Status" msgstr "" @@ -2940,7 +3060,7 @@ msgstr "" msgid "Submit" msgstr "" -#: client/src/helpers/Jobs.js:230 +#: client/src/helpers/Jobs.js:226 msgid "Submit the request to cancel?" msgstr "" @@ -2948,12 +3068,12 @@ msgstr "" msgid "Subscription" msgstr "" -#: client/src/forms/Credentials.js:152 -#: client/src/forms/Credentials.js:163 +#: client/src/forms/Credentials.js:153 +#: client/src/forms/Credentials.js:164 msgid "Subscription ID" msgstr "" -#: client/src/forms/Credentials.js:162 +#: client/src/forms/Credentials.js:163 msgid "Subscription ID is an Azure construct, which is mapped to a username." msgstr "" @@ -2987,11 +3107,15 @@ msgstr "" #: client/src/app.js:344 #: client/src/helpers/ActivityStream.js:35 +#: client/src/lists/Teams.js:16 +#: client/src/lists/Teams.js:17 #: client/src/organizations/linkout/organizations-linkout.route.js:97 msgid "TEAMS" msgstr "" #: client/src/helpers/ActivityStream.js:56 +#: client/src/lists/Templates.js:17 +#: client/src/lists/Templates.js:18 #: client/src/main-menu/main-menu.partial.html:113 #: client/src/main-menu/main-menu.partial.html:35 #: client/src/templates/list/templates-list.route.js:13 @@ -3007,7 +3131,7 @@ msgstr "" 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:316 +#: client/src/notifications/notificationTemplates.form.js:315 msgid "Target URL" msgstr "" @@ -3019,20 +3143,18 @@ msgstr "" msgid "Tasks" msgstr "" -#: client/src/forms/Credentials.js:468 -#: client/src/forms/Inventories.js:127 -#: client/src/forms/Projects.js:256 -#: client/src/forms/Workflows.js:147 +#: client/src/forms/Credentials.js:469 +#: client/src/forms/Inventories.js:128 +#: client/src/forms/Projects.js:263 +#: client/src/forms/Workflows.js:148 msgid "Team Roles" msgstr "" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:40 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:33 #: client/src/forms/Users.js:158 -#: client/src/lists/Teams.js:16 -#: client/src/lists/Teams.js:17 #: client/src/setup-menu/setup-menu.partial.html:16 -#: client/src/shared/stateDefinitions.factory.js:342 +#: client/src/shared/stateDefinitions.factory.js:345 msgid "Teams" msgstr "" @@ -3042,12 +3164,10 @@ msgid "Template" msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:34 -#: client/src/lists/Templates.js:17 -#: client/src/lists/Templates.js:18 msgid "Templates" msgstr "" -#: client/src/forms/Credentials.js:338 +#: client/src/forms/Credentials.js:339 msgid "Tenant ID" msgstr "" @@ -3055,8 +3175,8 @@ msgstr "" msgid "Test notification" msgstr "" -#: client/src/shared/form-generator.js:1414 -#: client/src/shared/form-generator.js:1420 +#: client/src/shared/form-generator.js:1423 +#: client/src/shared/form-generator.js:1429 msgid "That value was not found. Please enter or select a valid value." msgstr "" @@ -3065,7 +3185,7 @@ msgstr "" 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:735 +#: client/src/controllers/Projects.js:761 msgid "The SCM update process is running." msgstr "" @@ -3073,7 +3193,7 @@ msgstr "" msgid "The credential used to run this command." msgstr "" -#: client/src/forms/Credentials.js:191 +#: client/src/forms/Credentials.js:192 msgid "The email address assigned to the Google Compute Engine %sservice account." msgstr "" @@ -3094,7 +3214,7 @@ msgstr "" 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/job-results/job-results.controller.js:554 +#: client/src/job-results/job-results.controller.js:567 msgid "The output is too large to display. Please download." msgstr "" @@ -3102,7 +3222,7 @@ msgstr "" msgid "The project value" msgstr "" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 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 "" @@ -3126,15 +3246,15 @@ msgstr "" msgid "There are no jobs to display at this time" msgstr "" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 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/configuration/configuration.controller.js:308 +#: client/src/configuration/configuration.controller.js:319 msgid "There was an error resetting value. Returned status:" msgstr "" -#: client/src/configuration/configuration.controller.js:439 +#: client/src/configuration/configuration.controller.js:458 msgid "There was an error resetting values. Returned status:" msgstr "" @@ -3151,26 +3271,30 @@ msgstr "" msgid "This list is populated by notification templates added from the %sNotifications%s section" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:202 +#: client/src/notifications/notificationTemplates.form.js:201 msgid "This must be of the form %s." msgstr "" +#: client/src/shared/form-generator.js:745 +msgid "This setting has been set manually in a settings file and is now disabled." +msgstr "" + #: client/src/forms/Users.js:163 msgid "This user is not a member of any teams" msgstr "" -#: client/src/shared/form-generator.js:831 -#: client/src/shared/form-generator.js:945 +#: client/src/shared/form-generator.js:837 +#: client/src/shared/form-generator.js:951 msgid "This value does not match the password you entered previously. Please confirm that password." msgstr "" -#: client/src/configuration/configuration.controller.js:464 +#: client/src/configuration/configuration.controller.js:483 msgid "This will reset all configuration values to their factory defaults. Are you sure you want to proceed?" msgstr "" #: client/src/dashboard/lists/jobs/jobs-list.partial.html:14 #: client/src/lists/Streams.js:28 -#: client/src/notifications/notification-templates-list/list.controller.js:74 +#: client/src/notifications/notification-templates-list/list.controller.js:72 msgid "Time" msgstr "" @@ -3178,7 +3302,7 @@ msgstr "" msgid "Time Remaining" msgstr "" -#: client/src/forms/Projects.js:191 +#: client/src/forms/Projects.js:198 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 "" @@ -3188,7 +3312,7 @@ msgstr "" msgid "Timing" msgstr "" -#: client/src/forms/Credentials.js:126 +#: client/src/forms/Credentials.js:127 msgid "To learn more about the IAM STS Token, refer to the %sAmazon documentation%s." msgstr "" @@ -3196,7 +3320,7 @@ msgstr "" msgid "Toggle Output" msgstr "" -#: client/src/shared/form-generator.js:856 +#: client/src/shared/form-generator.js:862 msgid "Toggle the display of plaintext." msgstr "" @@ -3209,9 +3333,9 @@ msgstr "" msgid "Traceback" msgstr "" -#: client/src/forms/Credentials.js:61 -#: client/src/forms/Credentials.js:85 -#: client/src/forms/Teams.js:131 +#: client/src/forms/Credentials.js:62 +#: client/src/forms/Credentials.js:86 +#: client/src/forms/Teams.js:132 #: client/src/forms/Users.js:199 #: client/src/forms/WorkflowMaker.js:34 #: client/src/lists/AllJobs.js:61 @@ -3232,18 +3356,18 @@ msgid "Type Details" msgstr "" #: client/src/notifications/notificationTemplates.form.js:100 -#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:214 msgid "Type an option on each line." msgstr "" -#: client/src/notifications/notificationTemplates.form.js:144 -#: client/src/notifications/notificationTemplates.form.js:161 -#: client/src/notifications/notificationTemplates.form.js:374 +#: client/src/notifications/notificationTemplates.form.js:143 +#: client/src/notifications/notificationTemplates.form.js:160 +#: client/src/notifications/notificationTemplates.form.js:373 msgid "Type an option on each line. The pound symbol (#) is not required." msgstr "" -#: client/src/controllers/Projects.js:444 -#: client/src/controllers/Projects.js:726 +#: client/src/controllers/Projects.js:453 +#: client/src/controllers/Projects.js:752 msgid "URL popover text" msgstr "" @@ -3253,19 +3377,21 @@ msgstr "" #: client/src/app.js:368 #: client/src/helpers/ActivityStream.js:32 +#: client/src/lists/Users.js:20 +#: client/src/lists/Users.js:21 #: client/src/organizations/linkout/organizations-linkout.route.js:41 msgid "USERS" msgstr "" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "Update Not Found" msgstr "" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "Update in Progress" msgstr "" -#: client/src/forms/Projects.js:172 +#: client/src/forms/Projects.js:179 msgid "Update on Launch" msgstr "" @@ -3273,24 +3399,24 @@ msgstr "" msgid "Upgrade" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:408 +#: client/src/notifications/notificationTemplates.form.js:407 msgid "Use SSL" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:403 +#: client/src/notifications/notificationTemplates.form.js:402 msgid "Use TLS" msgstr "" -#: client/src/forms/Credentials.js:77 +#: client/src/forms/Credentials.js:78 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:457 -#: client/src/forms/Inventories.js:116 +#: client/src/forms/Credentials.js:458 +#: client/src/forms/Inventories.js:117 #: client/src/forms/Organizations.js:83 -#: client/src/forms/Projects.js:245 -#: client/src/forms/Teams.js:94 -#: client/src/forms/Workflows.js:136 +#: client/src/forms/Projects.js:252 +#: client/src/forms/Teams.js:95 +#: client/src/forms/Workflows.js:137 msgid "User" msgstr "" @@ -3303,7 +3429,7 @@ msgid "User Type" msgstr "" #: client/src/access/rbac-multiselect/permissionsUsers.list.js:30 -#: client/src/forms/Users.js:49 +#: client/src/forms/Users.js:60 #: client/src/helpers/Credentials.js:118 #: client/src/helpers/Credentials.js:225 #: client/src/helpers/Credentials.js:254 @@ -3315,16 +3441,14 @@ msgstr "" msgid "Username" msgstr "" -#: client/src/forms/Credentials.js:81 +#: client/src/forms/Credentials.js:82 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/access/add-rbac-resource/rbac-resource.partial.html:35 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:35 #: client/src/forms/Organizations.js:65 -#: client/src/forms/Teams.js:76 -#: client/src/lists/Users.js:20 -#: client/src/lists/Users.js:21 +#: client/src/forms/Teams.js:77 #: client/src/setup-menu/setup-menu.partial.html:10 msgid "Users" msgstr "" @@ -3346,11 +3470,13 @@ msgstr "" msgid "Valid License" msgstr "" -#: client/src/forms/Inventories.js:55 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:56 +#: client/src/forms/Hosts.js:66 +#: client/src/forms/Inventories.js:56 msgid "Variables" msgstr "" -#: client/src/forms/Credentials.js:392 +#: client/src/forms/Credentials.js:393 msgid "Vault Password" msgstr "" @@ -3361,7 +3487,6 @@ msgstr "" msgid "Verbosity" msgstr "" -#: client/src/about/about.controller.js:24 #: client/src/license/license.partial.html:15 msgid "Version" msgstr "" @@ -3388,17 +3513,21 @@ msgstr "" msgid "View Documentation" msgstr "" -#: client/src/forms/Inventories.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:69 +#: client/src/forms/Hosts.js:76 +#: client/src/forms/Inventories.js:66 msgid "View JSON examples at %s" msgstr "" -#: client/src/forms/JobTemplates.js:466 -#: client/src/forms/Workflows.js:164 -#: client/src/shared/form-generator.js:1727 +#: client/src/forms/JobTemplates.js:470 +#: client/src/forms/Workflows.js:165 +#: client/src/shared/form-generator.js:1736 msgid "View Survey" msgstr "" -#: client/src/forms/Inventories.js:66 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:70 +#: client/src/forms/Hosts.js:77 +#: client/src/forms/Inventories.js:67 msgid "View YAML examples at %s" msgstr "" @@ -3451,11 +3580,11 @@ msgstr "" msgid "View the job" msgstr "" -#: client/src/lists/Projects.js:109 +#: client/src/lists/Projects.js:110 msgid "View the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:75 +#: client/src/lists/ScheduledJobs.js:76 msgid "View the schedule" msgstr "" @@ -3478,7 +3607,7 @@ msgstr "" msgid "Waiting..." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:68 +#: client/src/configuration/auth-form/configuration-auth.controller.js:70 #: client/src/configuration/configuration.controller.js:179 #: client/src/configuration/configuration.controller.js:241 #: client/src/configuration/system-form/configuration-system.controller.js:47 @@ -3498,8 +3627,8 @@ msgstr "" msgid "When this template is submitted as a job, setting the type to %s will execute the playbook, running tasks on the selected hosts." msgstr "" -#: client/src/forms/Workflows.js:188 -#: client/src/shared/form-generator.js:1731 +#: client/src/forms/Workflows.js:189 +#: client/src/shared/form-generator.js:1740 msgid "Workflow Editor" msgstr "" @@ -3516,7 +3645,7 @@ msgstr "" msgid "You can create a job template here." msgstr "" -#: client/src/controllers/Projects.js:510 +#: client/src/controllers/Projects.js:519 msgid "You do not have access to view this property" msgstr "" @@ -3524,7 +3653,7 @@ msgstr "" msgid "You do not have permission to add a job template." msgstr "" -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 msgid "You do not have permission to add a project." msgstr "" @@ -3532,34 +3661,34 @@ msgstr "" msgid "You do not have permission to add a user." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:67 +#: client/src/configuration/auth-form/configuration-auth.controller.js:69 #: client/src/configuration/configuration.controller.js:178 #: client/src/configuration/configuration.controller.js:240 #: client/src/configuration/system-form/configuration-system.controller.js:46 msgid "You have unsaved changes. Would you like to proceed without saving?" msgstr "" -#: client/src/shared/form-generator.js:957 +#: client/src/shared/form-generator.js:963 msgid "Your password must be %d characters long." msgstr "" -#: client/src/shared/form-generator.js:962 +#: client/src/shared/form-generator.js:968 msgid "Your password must contain a lowercase letter." msgstr "" -#: client/src/shared/form-generator.js:972 +#: client/src/shared/form-generator.js:978 msgid "Your password must contain a number." msgstr "" -#: client/src/shared/form-generator.js:967 +#: client/src/shared/form-generator.js:973 msgid "Your password must contain an uppercase letter." msgstr "" -#: client/src/shared/form-generator.js:977 +#: client/src/shared/form-generator.js:983 msgid "Your password must contain one of the following characters: %s" msgstr "" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "Your request to cancel the update was submitted to the task manager." msgstr "" @@ -3567,7 +3696,7 @@ msgstr "" msgid "Your session timed out due to inactivity. Please sign in." msgstr "" -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "and" msgstr "" @@ -3579,19 +3708,19 @@ msgstr "" msgid "organization" msgstr "" -#: client/src/forms/Credentials.js:139 -#: client/src/forms/Credentials.js:365 +#: client/src/forms/Credentials.js:140 +#: client/src/forms/Credentials.js:366 msgid "set in helpers/credentials" msgstr "" -#: client/src/forms/Credentials.js:382 +#: client/src/forms/Credentials.js:383 msgid "v2 URLs%s - leave blank" msgstr "" -#: client/src/forms/Credentials.js:383 +#: client/src/forms/Credentials.js:384 msgid "v3 default%s - set to 'default'" msgstr "" -#: client/src/forms/Credentials.js:384 +#: client/src/forms/Credentials.js:385 msgid "v3 multi-domain%s - your domain name" msgstr "" From 645c2dbbc6b0e66a4503ee01fb89b93cbc65611c Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Tue, 11 Apr 2017 10:55:20 -0400 Subject: [PATCH 15/40] Switch uwsgi to only listen on local interface Previously it would listen systemwide on 0.0.0.0:8050 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 30f4ba2a45..80ef1e07d4 100644 --- a/Makefile +++ b/Makefile @@ -410,13 +410,13 @@ uwsgi: collectstatic @if [ "$(VENV_BASE)" ]; then \ . $(VENV_BASE)/tower/bin/activate; \ fi; \ - uwsgi -b 32768 --socket :8050 --module=awx.wsgi:application --home=/venv/tower --chdir=/tower_devel/ --vacuum --processes=5 --harakiri=120 --master --no-orphans --py-autoreload 1 --max-requests=1000 --stats /tmp/stats.socket --master-fifo=/awxfifo --lazy-apps + uwsgi -b 32768 --socket 127.0.0.1:8050 --module=awx.wsgi:application --home=/venv/tower --chdir=/tower_devel/ --vacuum --processes=5 --harakiri=120 --master --no-orphans --py-autoreload 1 --max-requests=1000 --stats /tmp/stats.socket --master-fifo=/awxfifo --lazy-apps daphne: @if [ "$(VENV_BASE)" ]; then \ . $(VENV_BASE)/tower/bin/activate; \ fi; \ - daphne -b 0.0.0.0 -p 8051 awx.asgi:channel_layer + daphne -b 127.0.0.1 -p 8051 awx.asgi:channel_layer runworker: @if [ "$(VENV_BASE)" ]; then \ From 6884e44bb35e89cc9e17a50001009685634cf612 Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Tue, 11 Apr 2017 10:43:00 -0400 Subject: [PATCH 16/40] Unit test added. --- awx/lib/tests/test_display_callback.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/awx/lib/tests/test_display_callback.py b/awx/lib/tests/test_display_callback.py index f84ab0df4f..2e979a67ca 100644 --- a/awx/lib/tests/test_display_callback.py +++ b/awx/lib/tests/test_display_callback.py @@ -86,7 +86,19 @@ def executor(tmpdir_factory, request): - name: Hello Message debug: msg: "Hello World!" -'''} # noqa +'''}, # noqa +{'results_included.yml': ''' +- name: Run module which generates results list + connection: local + hosts: all + gather_facts: no + vars: + results: ['foo', 'bar'] + tasks: + - name: Generate results list + debug: + var: results +'''}, # noqa ]) def test_callback_plugin_receives_events(executor, cache, event, playbook): executor.run() From 59b8ba2a1ca8064b38bd8e7a887348f27ba726c2 Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Tue, 11 Apr 2017 13:21:44 -0400 Subject: [PATCH 17/40] Fixed copy/move groups/hosts pagination bug --- .../copy-move/copy-move-groups.controller.js | 8 ++-- .../copy-move/copy-move-hosts.controller.js | 8 ++-- .../copy-move/copy-move-list.controller.js | 44 +++++++++++++++++++ .../manage/copy-move/copy-move.route.js | 7 ++- 4 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js index 9153dad34d..487211fa06 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js @@ -11,11 +11,9 @@ $scope.item = group; $scope.submitMode = $stateParams.groups === undefined ? 'move' : 'copy'; - $scope.toggle_row = function(id){ - // toggle off anything else currently selected - _.forEach($scope.groups, (item) => {return item.id === id ? item.checked = 1 : item.checked = null;}); - // yoink the currently selected thing - $scope.selected = _.find($scope.groups, (item) => {return item.id === id;}); + + $scope.updateSelected = function(selectedGroup) { + $scope.selected = angular.copy(selectedGroup); }; $scope.formCancel = function(){ $state.go('^'); diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js index 5c95523036..098ef23540 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js @@ -11,11 +11,9 @@ $scope.item = host; $scope.submitMode = 'copy'; - $scope.toggle_row = function(id){ - // toggle off anything else currently selected - _.forEach($scope.groups, (item) => {return item.id === id ? item.checked = 1 : item.checked = null;}); - // yoink the currently selected thing - $scope.selected = _.find($scope.groups, (item) => {return item.id === id;}); + + $scope.updateSelected = function(selectedGroup) { + $scope.selected = angular.copy(selectedGroup); }; $scope.formCancel = function(){ $state.go('^'); diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js new file mode 100644 index 0000000000..e672eae640 --- /dev/null +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js @@ -0,0 +1,44 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + + export default + ['$scope', 'CopyMoveGroupList', 'Dataset', + function($scope, list, Dataset){ + init(); + + function init() { + $scope.list = list; + $scope[`${list.iterator}_dataset`] = Dataset.data; + $scope[list.name] = $scope[`${list.iterator}_dataset`].results; + + $scope.$watch('groups', function(){ + if($scope.selectedGroup){ + $scope.groups.forEach(function(row, i) { + if(row.id === $scope.selectedGroup.id) { + $scope.groups[i].checked = 1; + } + else { + $scope.groups[i].checked = 0; + } + }); + } + }); + } + + $scope.toggle_row = function(id) { + // toggle off anything else currently selected + _.forEach($scope.groups, (item) => { + if(item.id === id) { + item.checked = 1; + $scope.selectedGroup = item; + $scope.updateSelected(item); + } + else { + item.checked = null; + } + }); + }; + }]; diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js index deff0cf0ef..82fd77fee2 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js @@ -8,6 +8,7 @@ import { N_ } from '../../../i18n'; import CopyMoveGroupsController from './copy-move-groups.controller'; import CopyMoveHostsController from './copy-move-hosts.controller'; +import CopyMoveListController from './copy-move-list.controller'; var copyMoveGroupRoute = { name: 'inventoryManage.copyMoveGroup', @@ -53,7 +54,8 @@ var copyMoveGroupRoute = { input_type: 'radio' }); return html; - } + }, + controller: CopyMoveListController } } }; @@ -90,7 +92,8 @@ var copyMoveHostRoute = { input_type: 'radio' }); return html; - } + }, + controller: CopyMoveListController } } }; From c3d002cc0f1a259af1551f6d8fd0718e77a74ac8 Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Tue, 11 Apr 2017 15:10:42 -0400 Subject: [PATCH 18/40] Fixed min/max length survey password bug where password had default and min > 12 --- awx/main/models/mixins.py | 15 +++++----- .../aw-password-max.directive.js | 29 +++++++++++++++++++ .../aw-password-min.directive.js | 27 +++++++++++++++++ .../job-submission.partial.html | 5 ++-- awx/ui/client/src/job-submission/main.js | 6 +++- 5 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js create mode 100644 awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js diff --git a/awx/main/models/mixins.py b/awx/main/models/mixins.py index e818b5b648..7a84bcbfff 100644 --- a/awx/main/models/mixins.py +++ b/awx/main/models/mixins.py @@ -28,9 +28,7 @@ class ResourceMixin(models.Model): ''' Use instead of `MyModel.objects` when you want to only consider resources that a user has specific permissions for. For example: - MyModel.accessible_objects(user, 'read_role').filter(name__istartswith='bar'); - NOTE: This should only be used for list type things. If you have a specific resource you want to check permissions on, it is more performant to resolve the resource in question then call @@ -159,12 +157,13 @@ class SurveyJobTemplateMixin(models.Model): errors.append("Value %s for '%s' expected to be a string." % (data[survey_element['variable']], survey_element['variable'])) return errors - if 'min' in survey_element and survey_element['min'] not in ["", None] and len(data[survey_element['variable']]) < int(survey_element['min']): - errors.append("'%s' value %s is too small (length is %s must be at least %s)." % - (survey_element['variable'], data[survey_element['variable']], len(data[survey_element['variable']]), survey_element['min'])) - if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']): - errors.append("'%s' value %s is too large (must be no more than %s)." % - (survey_element['variable'], data[survey_element['variable']], survey_element['max'])) + if not data[survey_element['variable']] == '$encrypted$' and not survey_element['type'] == 'password': + if 'min' in survey_element and survey_element['min'] not in ["", None] and len(data[survey_element['variable']]) < int(survey_element['min']): + errors.append("'%s' value %s is too small (length is %s must be at least %s)." % + (survey_element['variable'], data[survey_element['variable']], len(data[survey_element['variable']]), survey_element['min'])) + if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']): + errors.append("'%s' value %s is too large (must be no more than %s)." % + (survey_element['variable'], data[survey_element['variable']], survey_element['max'])) elif survey_element['type'] == 'integer': if survey_element['variable'] in data: if type(data[survey_element['variable']]) != int: diff --git a/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js new file mode 100644 index 0000000000..6ac96eff0e --- /dev/null +++ b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js @@ -0,0 +1,29 @@ +/************************************************* + * Copyright (c) 2017 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +/* jshint unused: vars */ + +export default + [ 'Empty', + function(Empty) { + return { + restrict: 'A', + require: 'ngModel', + link: function(scope, elem, attr, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + var max = (attr.awPasswordMax) ? scope.$eval(attr.awPasswordMax) : Infinity; + if (!Empty(max) && !Empty(viewValue) && viewValue.length > max && viewValue !== '$encrypted$') { + ctrl.$setValidity('awPasswordMax', false); + return viewValue; + } else { + ctrl.$setValidity('awPasswordMax', true); + return viewValue; + } + }); + } + }; + } + ]; diff --git a/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js new file mode 100644 index 0000000000..1498313177 --- /dev/null +++ b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js @@ -0,0 +1,27 @@ +/************************************************* + * Copyright (c) 2017 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + + export default + [ 'Empty', + function(Empty) { + return { + restrict: 'A', + require: 'ngModel', + link: function(scope, elem, attr, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + var min = (attr.awPasswordMin) ? scope.$eval(attr.awPasswordMin) : -Infinity; + if (!Empty(min) && !Empty(viewValue) && viewValue.length < min && viewValue !== '$encrypted$') { + ctrl.$setValidity('awPasswordMin', false); + return viewValue; + } else { + ctrl.$setValidity('awPasswordMin', true); + return viewValue; + } + }); + } + }; + } + ]; diff --git a/awx/ui/client/src/job-submission/job-submission.partial.html b/awx/ui/client/src/job-submission/job-submission.partial.html index f05bdd25a8..3f473a71d7 100644 --- a/awx/ui/client/src/job-submission/job-submission.partial.html +++ b/awx/ui/client/src/job-submission/job-submission.partial.html @@ -186,10 +186,11 @@ - + +
Please enter an answer.
-
Please enter an answer between {{question.minlength}} to {{question.maxlength}} characters long.
+
Please enter an answer between {{question.minlength}} to {{question.maxlength}} characters long.
diff --git a/awx/ui/client/src/job-submission/main.js b/awx/ui/client/src/job-submission/main.js index 71c4c5c0de..4d960176fb 100644 --- a/awx/ui/client/src/job-submission/main.js +++ b/awx/ui/client/src/job-submission/main.js @@ -10,6 +10,8 @@ import GetSurveyQuestions from './job-submission-factories/getsurveyquestions.fa import submitJob from './job-submission.directive'; import credentialList from './lists/credential/job-sub-cred-list.directive'; import inventoryList from './lists/inventory/job-sub-inv-list.directive'; +import awPasswordMin from './job-submission-directives/aw-password-min.directive'; +import awPasswordMax from './job-submission-directives/aw-password-max.directive'; export default angular.module('jobSubmission', []) @@ -18,4 +20,6 @@ export default .factory('GetSurveyQuestions', GetSurveyQuestions) .directive('submitJob', submitJob) .directive('jobSubCredList', credentialList) - .directive('jobSubInvList', inventoryList); + .directive('jobSubInvList', inventoryList) + .directive('awPasswordMin', awPasswordMin) + .directive('awPasswordMax', awPasswordMax); From 648aa470d7c033c3c1ec9546520e97333e15afff Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Tue, 11 Apr 2017 14:58:30 -0400 Subject: [PATCH 19/40] lock projects on project sync * Use filesystem, blocking, locks to prevent two project syncs for the same project from running the project update playbook at the same time. --- awx/main/models/projects.py | 6 ++++++ awx/main/tasks.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index bf60e5b77c..79c2183964 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -208,6 +208,12 @@ class ProjectOptions(models.Model): results.append(smart_text(playbook)) return sorted(results, key=lambda x: smart_str(x).lower()) + def get_lock_file(self): + proj_path = self.get_project_path() + if proj_path: + return os.path.join(proj_path, 'tower_sync.lock') + return None + class Project(UnifiedJobTemplate, ProjectOptions, ResourceMixin): ''' diff --git a/awx/main/tasks.py b/awx/main/tasks.py index d60d936531..b0e8a5b698 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -22,6 +22,7 @@ import urlparse import uuid from distutils.version import LooseVersion as Version import yaml +import fcntl try: import psutil except: @@ -1312,7 +1313,37 @@ class RunProjectUpdate(BaseTask): instance_actual.save() return OutputEventFilter(stdout_handle, raw_callback=raw_callback) + def release_lock(self, instance): + # May raise IOError + fcntl.flock(self.lock_fd, fcntl.LOCK_UN) + + os.close(self.lock_fd) + self.lock_fd = None + + ''' + Note: We don't support blocking=False + ''' + def acquire_lock(self, instance, blocking=True): + lock_path = instance.get_lock_file() + if lock_path is None: + raise RuntimeError(u'Invalid file %s' % instance.get_lock_file()) + + # May raise IOError + self.lock_fd = os.open(lock_path, os.O_RDONLY | os.O_CREAT) + + # May raise IOError + fcntl.flock(self.lock_fd, fcntl.LOCK_EX) + + def pre_run_hook(self, instance, **kwargs): + if instance.launch_type == 'sync': + #from celery.contrib import rdb + #rdb.set_trace() + self.acquire_lock(instance) + def post_run_hook(self, instance, status, **kwargs): + if instance.launch_type == 'sync': + self.release_lock(instance) + if instance.job_type == 'check' and status not in ('failed', 'canceled',): p = instance.project fd = open(self.revision_path, 'r') From d1eb33bca0a5f9725f85e5a195063c5b05e7b6f2 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Fri, 7 Apr 2017 16:44:46 -0400 Subject: [PATCH 20/40] Be more restrictive in catching LDAP exceptions. django-auth-ldap can throw exceptions, like TypeError if it's misconfigured. If we encounter an exception attempting to log into an LDAP server, log it and move on (otherwise, an uncaught exception will cause local login to fail, too). see: #5933 --- awx/sso/backends.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/awx/sso/backends.py b/awx/sso/backends.py index 9a37ea8bf1..273778b371 100644 --- a/awx/sso/backends.py +++ b/awx/sso/backends.py @@ -12,7 +12,6 @@ from django.dispatch import receiver from django.contrib.auth.models import User from django.conf import settings as django_settings from django.core.signals import setting_changed -from django.core.exceptions import ImproperlyConfigured # django-auth-ldap from django_auth_ldap.backend import LDAPSettings as BaseLDAPSettings @@ -90,8 +89,8 @@ class LDAPBackend(BaseLDAPBackend): return None try: return super(LDAPBackend, self).authenticate(username, password) - except ImproperlyConfigured: - logger.error("Unable to authenticate, LDAP is improperly configured") + except Exception: + logger.exception("Encountered an error authenticating to LDAP") return None def get_user(self, user_id): From 7919c47370f55c8d756e0a3d9baf9d200cc75d72 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Tue, 11 Apr 2017 16:53:13 -0400 Subject: [PATCH 21/40] put lock file in project root dir --- awx/main/models/projects.py | 6 +++--- awx/main/tasks.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index 79c2183964..a49046e0eb 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -210,9 +210,9 @@ class ProjectOptions(models.Model): def get_lock_file(self): proj_path = self.get_project_path() - if proj_path: - return os.path.join(proj_path, 'tower_sync.lock') - return None + if not proj_path: + return None + return proj_path + '.lock' class Project(UnifiedJobTemplate, ProjectOptions, ResourceMixin): diff --git a/awx/main/tasks.py b/awx/main/tasks.py index b0e8a5b698..1078b6a76f 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1326,7 +1326,7 @@ class RunProjectUpdate(BaseTask): def acquire_lock(self, instance, blocking=True): lock_path = instance.get_lock_file() if lock_path is None: - raise RuntimeError(u'Invalid file %s' % instance.get_lock_file()) + raise RuntimeError(u'Invalid lock file path') # May raise IOError self.lock_fd = os.open(lock_path, os.O_RDONLY | os.O_CREAT) From d1eba4b607d5a7abe906ca7fe351fcdcf90b75a0 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Wed, 12 Apr 2017 11:41:11 -0400 Subject: [PATCH 22/40] log lock errors and test it --- awx/main/tests/unit/test_tasks.py | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/awx/main/tests/unit/test_tasks.py b/awx/main/tests/unit/test_tasks.py index 16b9bc6b14..6465512da0 100644 --- a/awx/main/tests/unit/test_tasks.py +++ b/awx/main/tests/unit/test_tasks.py @@ -1,6 +1,9 @@ from contextlib import contextmanager +import os +import fcntl import pytest +import mock import yaml from awx.main.models import ( @@ -143,3 +146,63 @@ def test_openstack_client_config_generation_with_private_source_vars(mocker, sou 'private': expected } } + + +def test_os_open_oserror(): + with pytest.raises(OSError): + os.open('this_file_does_not_exist', os.O_RDONLY) + + +def test_fcntl_ioerror(): + with pytest.raises(IOError): + fcntl.flock(99999, fcntl.LOCK_EX) + + +@mock.patch('os.open') +@mock.patch('logging.getLogger') +def test_aquire_lock_open_fail_logged(logging_getLogger, os_open): + err = OSError() + err.errno = 3 + err.strerror = 'dummy message' + + instance = mock.Mock() + instance.get_lock_file.return_value = 'this_file_does_not_exist' + + os_open.side_effect = err + + logger = mock.Mock() + logging_getLogger.return_value = logger + + ProjectUpdate = tasks.RunProjectUpdate() + + with pytest.raises(OSError, errno=3, strerror='dummy message'): + ProjectUpdate.acquire_lock(instance) + assert logger.err.called_with("I/O error({0}) while trying to open lock file [{1}]: {2}".format(3, 'this_file_does_not_exist', 'dummy message')) + + +@mock.patch('os.open') +@mock.patch('os.close') +@mock.patch('logging.getLogger') +@mock.patch('fcntl.flock') +def test_aquire_lock_acquisition_fail_logged(fcntl_flock, logging_getLogger, os_close, os_open): + err = IOError() + err.errno = 3 + err.strerror = 'dummy message' + + instance = mock.Mock() + instance.get_lock_file.return_value = 'this_file_does_not_exist' + + os_open.return_value = 3 + + logger = mock.Mock() + logging_getLogger.return_value = logger + + fcntl_flock.side_effect = err + + ProjectUpdate = tasks.RunProjectUpdate() + + with pytest.raises(IOError, errno=3, strerror='dummy message'): + ProjectUpdate.acquire_lock(instance) + os_close.assert_called_with(3) + assert logger.err.called_with("I/O error({0}) while trying to aquire lock on file [{1}]: {2}".format(3, 'this_file_does_not_exist', 'dummy message')) + From 70fafe75d2af1f4ccb33431b2f125c36526a4758 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Wed, 12 Apr 2017 11:42:31 -0400 Subject: [PATCH 23/40] clean up commented code --- awx/main/tasks.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/awx/main/tasks.py b/awx/main/tasks.py index 1078b6a76f..7d09ee87d1 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1314,8 +1314,12 @@ class RunProjectUpdate(BaseTask): return OutputEventFilter(stdout_handle, raw_callback=raw_callback) def release_lock(self, instance): - # May raise IOError - fcntl.flock(self.lock_fd, fcntl.LOCK_UN) + try: + fcntl.flock(self.lock_fd, fcntl.LOCK_UN) + except IOError as e: + logger.error("I/O error({0}) while trying to open lock file [{1}]: {2}".format(e.errno, instance.get_lock_file(), e.strerror)) + os.close(self.lock_fd) + raise os.close(self.lock_fd) self.lock_fd = None @@ -1328,16 +1332,21 @@ class RunProjectUpdate(BaseTask): if lock_path is None: raise RuntimeError(u'Invalid lock file path') - # May raise IOError - self.lock_fd = os.open(lock_path, os.O_RDONLY | os.O_CREAT) + try: + self.lock_fd = os.open(lock_path, os.O_RDONLY | os.O_CREAT) + except OSError as e: + logger.error("I/O error({0}) while trying to open lock file [{1}]: {2}".format(e.errno, lock_path, e.strerror)) + raise - # May raise IOError - fcntl.flock(self.lock_fd, fcntl.LOCK_EX) + try: + fcntl.flock(self.lock_fd, fcntl.LOCK_EX) + except IOError as e: + os.close(self.lock_fd) + logger.error("I/O error({0}) while trying to aquire lock on file [{1}]: {2}".format(e.errno, lock_path, e.strerror)) + raise def pre_run_hook(self, instance, **kwargs): if instance.launch_type == 'sync': - #from celery.contrib import rdb - #rdb.set_trace() self.acquire_lock(instance) def post_run_hook(self, instance, status, **kwargs): From 6f0a8949a6197975d6224bb476854924e4aba232 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 12 Apr 2017 16:46:58 -0400 Subject: [PATCH 24/40] Add supervisorctl logs In some systems, the tower service process may not have sufficient permissions to communicate with the supervisorctl socket, in which case an automated restart will not be possible. --- awx/main/tests/unit/utils/test_reload.py | 9 +++++++-- awx/main/utils/reload.py | 10 +++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/awx/main/tests/unit/utils/test_reload.py b/awx/main/tests/unit/utils/test_reload.py index 83466c9cc8..26f2d42ece 100644 --- a/awx/main/tests/unit/utils/test_reload.py +++ b/awx/main/tests/unit/utils/test_reload.py @@ -3,10 +3,15 @@ from awx.main.utils import reload def test_produce_supervisor_command(mocker): - with mocker.patch.object(reload.subprocess, 'Popen'): + communicate_mock = mocker.MagicMock(return_value=('Everything is fine', '')) + mock_process = mocker.MagicMock() + mock_process.communicate = communicate_mock + Popen_mock = mocker.MagicMock(return_value=mock_process) + with mocker.patch.object(reload.subprocess, 'Popen', Popen_mock): reload._supervisor_service_command(['beat', 'callback', 'fact'], "restart") reload.subprocess.Popen.assert_called_once_with( - ['supervisorctl', 'restart', 'tower-processes:receiver', 'tower-processes:factcacher']) + ['supervisorctl', 'restart', 'tower-processes:receiver', 'tower-processes:factcacher'], + stderr=-1, stdin=-1, stdout=-1) def test_routing_of_service_restarts_works(mocker): diff --git a/awx/main/utils/reload.py b/awx/main/utils/reload.py index 6a88062ab5..25a4d17a57 100644 --- a/awx/main/utils/reload.py +++ b/awx/main/utils/reload.py @@ -49,7 +49,15 @@ def _supervisor_service_command(service_internal_names, command): args.extend([command]) args.extend(programs) logger.debug('Issuing command to restart services, args={}'.format(args)) - subprocess.Popen(args) + supervisor_process = subprocess.Popen(args, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + restart_stdout, restart_err = supervisor_process.communicate() + restart_code = supervisor_process.returncode + if restart_code or restart_err: + logger.error('supervisorctl restart errored with exit code `{}`, stdout:\n{}stderr:\n{}'.format( + restart_code, restart_stdout.strip(), restart_err.strip())) + else: + logger.info('supervisorctl restart finished, stdout:\n{}'.format(restart_stdout.strip())) def restart_local_services(service_internal_names): From 6c06344fdbe8242b231ec63c2c5633202e989a0c Mon Sep 17 00:00:00 2001 From: gconsidine Date: Mon, 17 Apr 2017 11:06:13 -0400 Subject: [PATCH 25/40] Fix permission modal in team settings A GET request is made to check permissions on job templates, workflow templates, inventories, etc. With a basic license, the workflow template request returns a 402. The logic in place accounted for 500-ish errors and 200s. Now if a 402 response is returned, it's excluded from the UI without affecting the other successful responses. --- .../src/access/add-rbac-user-team/rbac-user-team.partial.html | 3 ++- awx/ui/client/src/shared/smart-search/queryset.service.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html index f162e28c58..44394369a6 100644 --- a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html +++ b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html @@ -40,6 +40,7 @@
Workflow Templates
@@ -65,7 +66,7 @@
-
+
diff --git a/awx/ui/client/src/shared/smart-search/queryset.service.js b/awx/ui/client/src/shared/smart-search/queryset.service.js index 9484d10cef..c2800f0bf2 100644 --- a/awx/ui/client/src/shared/smart-search/queryset.service.js +++ b/awx/ui/client/src/shared/smart-search/queryset.service.js @@ -254,6 +254,10 @@ export default ['$q', 'Rest', 'ProcessErrors', '$rootScope', 'Wait', 'DjangoSear .catch(function(response) { Wait('stop'); + if (/^\/api\/v[0-9]+\/workflow_job_templates\/$/.test(endpoint) && response.status === 402) { + return response; + } + this.error(response.data, response.status); throw response; From 3af0f505d82512c702a7802fce538f09c84e2096 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 17 Apr 2017 13:55:31 -0400 Subject: [PATCH 26/40] Setting for external log emissions cert verification Stopgap solution for issue for 3.1.3 where Splunk servers with a self-signed certificate could not receive logs from Tower. Users should set `LOG_AGGREGATOR_VERIFY_CERT = False` in settings to use this. --- awx/main/utils/handlers.py | 8 ++++++-- awx/settings/defaults.py | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/awx/main/utils/handlers.py b/awx/main/utils/handlers.py index 3eb9852472..25bb49231d 100644 --- a/awx/main/utils/handlers.py +++ b/awx/main/utils/handlers.py @@ -39,6 +39,7 @@ PARAM_NAMES = { 'indv_facts': 'LOG_AGGREGATOR_INDIVIDUAL_FACTS', 'enabled_flag': 'LOG_AGGREGATOR_ENABLED', 'http_timeout': 'LOG_AGGREGATOR_HTTP_TIMEOUT', + 'verify_cert': 'LOG_AGGREGATOR_VERIFY_CERT' } @@ -146,8 +147,11 @@ class BaseHTTPSHandler(logging.Handler): payload_str = json.dumps(payload_input) else: payload_str = payload_input - return dict(data=payload_str, background_callback=unused_callback, - timeout=self.http_timeout) + kwargs = dict(data=payload_str, background_callback=unused_callback, + timeout=self.http_timeout) + if self.verify_cert is False: + kwargs['verify'] = False + return kwargs def skip_log(self, logger_name): if self.host == '' or (not self.enabled_flag): diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index e3af1781db..65257059b1 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -866,8 +866,10 @@ INSIGHTS_URL_BASE = "https://access.redhat.com" TOWER_SETTINGS_MANIFEST = {} +# Settings related to external logger configuration LOG_AGGREGATOR_ENABLED = False LOG_AGGREGATOR_HTTP_TIMEOUT = 5 +LOG_AGGREGATOR_VERIFY_CERT = True # The number of retry attempts for websocket session establishment # If you're encountering issues establishing websockets in clustered Tower, From 90a45c8fc3efab659de0b170178b0b44045d4d49 Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Mon, 17 Apr 2017 15:48:41 -0700 Subject: [PATCH 27/40] CTiT -> adhoc modules should allow the user to add new modules the adhoc module field was not setup to allow users to input additional options. --- .../configuration/configuration.controller.js | 29 ++++++++++--------- .../configuration-jobs.controller.js | 14 ++++++++- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index dab604b744..cc477d353b 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -353,23 +353,26 @@ export default [ clearApiErrors(); _.each(keys, function(key) { if($scope.configDataResolve[key].type === 'choice' || multiselectDropdowns.indexOf(key) !== -1) { + + // Handle AD_HOC_COMMANDS + if(multiselectDropdowns.indexOf(key) !== -1) { + let newModules = $("#configuration_jobs_template_AD_HOC_COMMANDS > option") + .filter("[data-select2-tag=true]") + .map((i, val) => ({value: $(val).text()})); + newModules.each(function(i, val) { + $scope[key].push(val); + }); + + payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); + } + //Parse dropdowns and dropdowns labeled as lists - if($scope[key] === null) { + else if($scope[key] === null) { payload[key] = null; } else if($scope[key][0] && $scope[key][0].value !== undefined) { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Handle AD_HOC_COMMANDS - payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); - } else { - payload[key] = _.map($scope[key], 'value').join(','); - } + payload[key] = _.map($scope[key], 'value').join(','); } else { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Default AD_HOC_COMMANDS to an empty list - payload[key] = $scope[key].value || []; - } else { - payload[key] = $scope[key].value; - } + payload[key] = $scope[key].value; } } else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) { // Parse lists diff --git a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js index 2aca32628b..ca14b35225 100644 --- a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js +++ b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js @@ -79,7 +79,18 @@ export default [ function populateAdhocCommand(flag){ $scope.$parent.AD_HOC_COMMANDS = $scope.$parent.AD_HOC_COMMANDS.toString(); var ad_hoc_commands = $scope.$parent.AD_HOC_COMMANDS.split(','); - $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, (item) => _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item })); + $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, function(item){ + let option = _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item }); + if(!option){ + option = { + name: item, + value: item, + label: item + }; + $scope.$parent.AD_HOC_COMMANDS_options.push(option); + } + return option; + }); if(flag !== undefined){ dropdownRendered = flag; @@ -90,6 +101,7 @@ export default [ CreateSelect2({ element: '#configuration_jobs_template_AD_HOC_COMMANDS', multiple: true, + addNew: true, placeholder: i18n._('Select commands') }); } From da0a721a2d3e95226a258144e0fd923c109ac091 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Tue, 18 Apr 2017 11:57:17 -0400 Subject: [PATCH 28/40] Add dropdown li truncation with ellipsis Display the full text on hover by expanding the list item container. --- awx/ui/client/legacy-styles/forms.less | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/awx/ui/client/legacy-styles/forms.less b/awx/ui/client/legacy-styles/forms.less index d8f705e1ad..f2b39dd47f 100644 --- a/awx/ui/client/legacy-styles/forms.less +++ b/awx/ui/client/legacy-styles/forms.less @@ -343,7 +343,6 @@ .select2-results__option{ color: @field-label !important; - height: 30px!important; } .select2-container--default .select2-results__option--highlighted[aria-selected]{ @@ -630,3 +629,15 @@ input[type='radio']:checked:before { .alert-info--noTextTransform { text-transform: none; } + +.select2-results__option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.select2-results__option:hover { + overflow-wrap: break-word; + white-space: normal; +} + From ea0f7ad0de857dea320a5a3759614c50bf78c13c Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Tue, 18 Apr 2017 12:56:22 -0400 Subject: [PATCH 29/40] don't display chunked lines' --- awx/ui/client/src/job-results/parse-stdout.service.js | 6 +----- awx/ui/tests/spec/job-results/parse-stdout.service-test.js | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index 03852eb185..6df6b7c381 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -258,11 +258,7 @@ export default ['$log', 'moment', function($log, moment){ .split("\r\n"); if (lineNums.length > lines.length) { - let padBy = lineNums.length - lines.length; - - for (let i = 0; i <= padBy; i++) { - lines.push(""); - } + lineNums = lineNums.slice(0, lines.length); } lines = this.distributeColors(lines); diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 069a7d47eb..586be5a6be 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -129,7 +129,7 @@ describe('parseStdoutService', () => { end_line: 11, stdout: "a\r\nb\r\nc..." }; - let expectedReturn = [[8, "a"],[9, "b"], [10,"c..."], [11, ""]]; + let expectedReturn = [[8, "a"],[9, "b"], [10,"c..."]]; let returnedEvent = parseStdoutService.getLineArr(mockEvent); From 9831c4551dedeebaeb8d604f00c7a59c0ec2c82e Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Wed, 19 Apr 2017 10:09:46 -0400 Subject: [PATCH 30/40] Merge pull request #6057 from shanemcd/external-db-restore Fix external database restores From 08aada3362fe0ef0873959700148f3e80be011ff Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Wed, 19 Apr 2017 18:59:54 -0400 Subject: [PATCH 31/40] Pull Spanish updates from Zanata --- awx/locale/es/LC_MESSAGES/django.po | 1473 +++++++++++++-------------- awx/ui/po/es.po | 1351 +++++++++++++----------- 2 files changed, 1495 insertions(+), 1329 deletions(-) diff --git a/awx/locale/es/LC_MESSAGES/django.po b/awx/locale/es/LC_MESSAGES/django.po index 1d565f426d..2e90aa91c1 100644 --- a/awx/locale/es/LC_MESSAGES/django.po +++ b/awx/locale/es/LC_MESSAGES/django.po @@ -2,21 +2,22 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# Carlos Munoz , 2017. #zanata +# mkim , 2017. #zanata msgid "" msgstr "" -"Project-Id-Version: ANSIBLE TOWER 0.1\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-09 14:32+0000\n" -"PO-Revision-Date: 2017-03-16 16:58+0100\n" -"Last-Translator: Alberto Gonzalez \n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" +"PO-Revision-Date: 2017-04-20 03:08+0000\n" +"Last-Translator: Carlos Munoz \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.6.10\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.1.1\n" #: awx/api/authentication.py:67 msgid "Invalid token header. No credentials provided." @@ -72,7 +73,22 @@ msgstr "Habilitar autentificación básica HTTP" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "Habilitar autentificación básica HTTP para la navegación API." -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +#, fuzzy +msgid "Filtering on password fields is not allowed." +msgstr "Filtrar sobre campos de contraseña no está permitido." + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, fuzzy, python-format +msgid "Filtering on %s is not allowed." +msgstr "Filtrar sobre %s no está permitido." + +#: awx/api/filters.py:347 +#, fuzzy, python-format +msgid "cannot order by field %s" +msgstr "no se puede ordenar por el campo %s" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "\"id\" es necesario para desasociar" @@ -118,35 +134,35 @@ msgstr "Fecha y hora cuando este {} fue modificado más recientemente." msgid "JSON parse error - %s" msgstr "Error analizando JSON - %s" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "Ejecutar Playbook" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:254 msgid "Command" msgstr "Comando" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "Actualización SCM" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "Sincronizar inventario" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "Trabajo de gestión" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "Tarea en flujo de trabajo" -#: awx/api/serializers.py:257 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "Plantilla de flujo de trabajo" -#: awx/api/serializers.py:653 awx/api/serializers.py:711 awx/api/views.py:3842 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " @@ -156,73 +172,73 @@ msgstr "" "sólo está soportada la descarga para tamaños por encima de " "%(supported_size)d bytes" -#: awx/api/serializers.py:726 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "Campo de sólo escritura utilizado para cambiar la contraseña." -#: awx/api/serializers.py:728 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "Establecer si la cuenta es administrada por un servicio externo" -#: awx/api/serializers.py:752 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "Contraseña requerida para un usuario nuevo." -#: awx/api/serializers.py:836 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "Incapaz de cambiar %s en usuario gestionado por LDAP." -#: awx/api/serializers.py:997 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "Organización no encontrada." -#: awx/api/serializers.py:1001 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" "Opciones de actualización deben ser establecidas a false para proyectos " "manuales." -#: awx/api/serializers.py:1007 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "Colección de playbooks disponibles dentro de este proyecto." -#: awx/api/serializers.py:1189 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "Especificación de puerto inválido: %s" -#: awx/api/serializers.py:1217 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "Debe ser un válido JSON o YAML." -#: awx/api/serializers.py:1274 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "Nombre de grupo inválido." -#: awx/api/serializers.py:1349 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" "El script debe empezar con una secuencia hashbang, p.e.... #!/usr/bin/env " "python" -#: awx/api/serializers.py:1402 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "Si 'source' es 'custom', 'source_script' debe ser especificado." -#: awx/api/serializers.py:1406 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" "El 'source_script' no pertenece a la misma organización que el inventario." -#: awx/api/serializers.py:1408 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "'source_script' no existe." -#: awx/api/serializers.py:1770 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." @@ -230,7 +246,7 @@ msgstr "" "Campo de sólo escritura utilizado para añadir usuario a rol de propietario. " "Si se indica, no otorgar equipo u organización. Sólo válido para creación." -#: awx/api/serializers.py:1775 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." @@ -238,182 +254,183 @@ msgstr "" "Campo de sólo escritura para añadir equipo a un rol propietario.Si se " "indica, no otorgar usuario u organización. Sólo válido para creación." -#: awx/api/serializers.py:1780 +#: awx/api/serializers.py:1779 msgid "" -"Inherit permissions from organization roles. If provided on creation, do not " -"give either user or team." +"Inherit permissions from organization roles. If provided on creation, do not" +" give either user or team." msgstr "" "Permisos heredados desde roles de organización. Si se indica, no otorgar " "usuario o equipo." -#: awx/api/serializers.py:1796 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "No encontrado 'user', 'team' u 'organization'" -#: awx/api/serializers.py:1809 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -"Credenciales de organización deben ser establecidas y coincidir antes de ser " -"asignadas a un equipo" +"Credenciales de organización deben ser establecidas y coincidir antes de ser" +" asignadas a un equipo" -#: awx/api/serializers.py:1905 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "Este campo es obligatorio." -#: awx/api/serializers.py:1907 awx/api/serializers.py:1909 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "Playbook no encontrado para el proyecto." -#: awx/api/serializers.py:1911 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "Debe seleccionar un playbook para el proyecto." -#: awx/api/serializers.py:1977 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" "Debe establecer un valor por defecto o preguntar por valor al ejecutar." -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:277 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "Trabajos de escaneo deben ser asignados a un inventario fijo." -#: awx/api/serializers.py:1982 awx/main/models/jobs.py:280 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "Tipos de trabajo 'run' y 'check' deben tener asignado un proyecto." -#: awx/api/serializers.py:1989 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" "Un cuestionario activado no puede ser utilizado con trabajos de escaneo." -#: awx/api/serializers.py:2049 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "Plantilla de trabajo inválida" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "Credencial no encontrado o eliminado." -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "Proyecto en la plantilla de trabajo no encontrado o no definido." -#: awx/api/serializers.py:2138 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "Inventario en la plantilla de trabajo no encontrado o no definido." -#: awx/api/serializers.py:2423 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" "j%(job_type)s no es un tipo de trabajo válido. Las opciones son %(choices)s." -#: awx/api/serializers.py:2428 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" "Plantilla de tarea en el flujo de trabajo no encontrada durante la creación." -#: awx/api/serializers.py:2433 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "No es posible anidar un %s dentro de un WorkflowJobTemplate" -#: awx/api/serializers.py:2671 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "Plantilla de trabajo '%s' no encontrada o no definida." -#: awx/api/serializers.py:2697 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "Debe ser un JSON válido o un diccionario YAML." -#: awx/api/serializers.py:2839 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" "Campos obligatorios no definidos para la configuración de notificación: " "notification_type" -#: awx/api/serializers.py:2862 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "Ningún valor especificado para el campo '{}'" -#: awx/api/serializers.py:2867 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "Campos no definidos para la configuración de notificación: {}." -#: awx/api/serializers.py:2870 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "Tipo incorrecto en la configuración del campo '{} ', esperado {}." -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "Fuente del inventario debe ser un recurso cloud." -#: awx/api/serializers.py:2925 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "Un proyecto manual no puede tener una programación establecida." -#: awx/api/serializers.py:2947 -msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" +#: awx/api/serializers.py:2946 +msgid "" +"DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -"DTSTART necesario en 'rrule'. El valor debe coincidir: DTSTART:" -"YYYYMMDDTHHMMSSZ" +"DTSTART necesario en 'rrule'. El valor debe coincidir: " +"DTSTART:YYYYMMDDTHHMMSSZ" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "Múltiple DTSTART no está soportado." -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "RRULE requerido en rrule" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "Múltiple RRULE no está soportado." -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "INTERVAL requerido en 'rrule'." -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "TZID no está soportado." -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "SECONDLY no está soportado." -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "Multiple BYMONTHDAYs no soportado." -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "Multiple BYMONTHs no soportado." -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "BYDAY con prefijo numérico no soportado." -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "BYYEARDAY no soportado." -#: awx/api/serializers.py:2969 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "BYWEEKNO no soportado." -#: awx/api/serializers.py:2973 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "COUNT > 999 no está soportada." -#: awx/api/serializers.py:2977 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "Validación fallida analizando 'rrule'" -#: awx/api/serializers.py:3012 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" @@ -421,7 +438,7 @@ msgstr "" "Un resumen de los valores nuevos y cambiados cuando un objeto es creado, " "actualizado o eliminado." -#: awx/api/serializers.py:3014 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " @@ -431,24 +448,24 @@ msgstr "" "afectado. Para asociar o desasociar eventos éste es el tipo de objeto " "asociado o desasociado con object2." -#: awx/api/serializers.py:3017 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " -"disassociate events this is the object type that object1 is being associated " -"with." +"disassociate events this is the object type that object1 is being associated" +" with." msgstr "" "Vacío para crear, actualizar y eliminar eventos. Para asociar y desasociar " "eventos éste es el tipo de objetos que object1 con el está asociado." -#: awx/api/serializers.py:3020 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "La acción tomada al respeto al/los especificado(s) objeto(s)." -#: awx/api/serializers.py:3123 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "Incapaz de iniciar sesión con los credenciales indicados." -#: awx/api/serializers.py:3125 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "Debe incluir \"usuario\" y \"contraseña\"." @@ -538,23 +555,23 @@ msgstr "Programaciones" msgid "Schedule Jobs List" msgstr "Lista de trabajos programados" -#: awx/api/views.py:727 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "Su licencia de Tower sólo permite que exista una organización." -#: awx/api/views.py:952 awx/api/views.py:1311 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "El campo de rol 'id' no encontrado." -#: awx/api/views.py:958 awx/api/views.py:4129 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "No puede asignar un rol de organización como rol hijo para un equipo." -#: awx/api/views.py:962 awx/api/views.py:4143 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "No puede asignar permisos de nivel de sistema a un equipo." -#: awx/api/views.py:969 awx/api/views.py:4135 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" @@ -562,33 +579,33 @@ msgstr "" "No puede asignar credenciales de acceso a un equipo cuando el campo de " "organización no está establecido o pertenezca a una organización diferente." -#: awx/api/views.py:1059 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "No se puede eliminar el proyecto." -#: awx/api/views.py:1088 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "Programación del proyecto" -#: awx/api/views.py:1192 awx/api/views.py:2285 awx/api/views.py:3298 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" "No es posible eliminar un recurso de trabajo cuando la tarea del flujo de " "trabajo está en ejecución." -#: awx/api/views.py:1269 +#: awx/api/views.py:1272 msgid "Me" msgstr "Yo" -#: awx/api/views.py:1315 awx/api/views.py:4084 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "No puede realizar ninguna acción con su admin_role." -#: awx/api/views.py:1321 awx/api/views.py:4088 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "No puede cambiar la pertenencia a usuarios admin_role" -#: awx/api/views.py:1326 awx/api/views.py:4093 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" @@ -596,183 +613,183 @@ msgstr "" "No puede conceder credenciales de acceso a un usuario que no está en la " "organización del credencial." -#: awx/api/views.py:1330 awx/api/views.py:4097 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "No puede conceder acceso a un credencial privado a otro usuario" -#: awx/api/views.py:1428 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "No se puede cambiar %s." -#: awx/api/views.py:1434 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "No se puede eliminar usuario." -#: awx/api/views.py:1583 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "No se puede eliminar script de inventario." -#: awx/api/views.py:1820 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "Fact no encontrado." -#: awx/api/views.py:2140 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "Listado de fuentes del inventario" -#: awx/api/views.py:2168 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "No se puede eliminar la fuente del inventario." -#: awx/api/views.py:2176 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "Programaciones de la fuente del inventario" -#: awx/api/views.py:2206 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -"Plantillas de notificación pueden ser sólo asignadas cuando la fuente es una " -"de estas {}." +"Plantillas de notificación pueden ser sólo asignadas cuando la fuente es una" +" de estas {}." -#: awx/api/views.py:2414 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "Programación plantilla de trabajo" -#: awx/api/views.py:2434 awx/api/views.py:2450 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "Su licencia no permite añadir cuestionarios." -#: awx/api/views.py:2457 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "'name' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2459 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "'description' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2461 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "'spec' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2463 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "'spec' debe ser una lista de elementos." -#: awx/api/views.py:2465 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "'spec' no contiene ningún elemento." -#: awx/api/views.py:2471 +#: awx/api/views.py:2484 #, python-format msgid "Survey question %s is not a json object." msgstr "Pregunta de cuestionario %s no es un objeto JSON." -#: awx/api/views.py:2473 +#: awx/api/views.py:2486 #, python-format msgid "'type' missing from survey question %s." msgstr "'type' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2475 +#: awx/api/views.py:2488 #, python-format msgid "'question_name' missing from survey question %s." msgstr "'question_name' no aparece en la pregunta de cuestionario %s." -#: awx/api/views.py:2477 +#: awx/api/views.py:2490 #, python-format msgid "'variable' missing from survey question %s." msgstr "'variable' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2479 +#: awx/api/views.py:2492 #, python-format msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." msgstr "" "'variable' '%(item)s' repetida en la pregunta de cuestionario %(survey)s." -#: awx/api/views.py:2484 +#: awx/api/views.py:2497 #, python-format msgid "'required' missing from survey question %s." msgstr "'required' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2569 +#: awx/api/views.py:2582 msgid "Maximum number of labels for {} reached." msgstr "Número máximo de etiquetas para {} alcanzado." -#: awx/api/views.py:2698 +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "¡Ningún servidor indicado pudo ser encontrado!" -#: awx/api/views.py:2701 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "¡Varios servidores corresponden a la petición!" -#: awx/api/views.py:2706 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" "No se puede iniciar automáticamente, !Entrada de datos de usuario necesaria!" -#: awx/api/views.py:2713 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "Trabajo de callback para el servidor ya está pendiente." -#: awx/api/views.py:2726 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "¡Error iniciando trabajo!" -#: awx/api/views.py:3055 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "Programaciones de plantilla de tareas de flujo de trabajo" -#: awx/api/views.py:3197 awx/api/views.py:3745 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "Privilegios de superusuario necesarios." -#: awx/api/views.py:3229 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "Programación de plantilla de trabajos de sistema." -#: awx/api/views.py:3421 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "Lista resumida de trabajos de servidor" -#: awx/api/views.py:3468 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "LIsta de hijos de eventos de trabajo" -#: awx/api/views.py:3477 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "Lista de eventos de trabajos de servidor." -#: awx/api/views.py:3486 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "Lista de eventos de trabajo" -#: awx/api/views.py:3699 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "Lista de eventos para comando Ad Hoc" -#: awx/api/views.py:3897 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "Error generando la descarga del fichero de salida estándar: {}" -#: awx/api/views.py:3910 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "Error generando la descarga del fichero de salida estándar: %s" -#: awx/api/views.py:3955 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "Eliminar no está permitido mientras existan notificaciones pendientes" -#: awx/api/views.py:3962 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "Prueba de plantilla de notificación" -#: awx/api/views.py:4078 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "Campo de usuario 'id' no encontrado." -#: awx/api/views.py:4121 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "Campo de equipo 'id' no encontrado." @@ -930,7 +947,7 @@ msgstr "Ejemplo de configuración que puede ser diferente para cada usuario." msgid "User" msgstr "Usuario" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "Introduzca una URL válida" @@ -943,7 +960,8 @@ msgid "Only show which settings would be commented/migrated." msgstr "Sólo mostrar los ajustes que serán comentados/migrados." #: awx/conf/management/commands/migrate_to_database_settings.py:48 -msgid "Skip over settings that would raise an error when commenting/migrating." +msgid "" +"Skip over settings that would raise an error when commenting/migrating." msgstr "Omitir los ajustes que causarán un error cuando comentando/migrando." #: awx/conf/management/commands/migrate_to_database_settings.py:55 @@ -1001,25 +1019,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:68 -#: awx/conf/tests/unit/test_settings.py:86 -#: awx/conf/tests/unit/test_settings.py:101 -#: awx/conf/tests/unit/test_settings.py:116 -#: awx/conf/tests/unit/test_settings.py:132 -#: awx/conf/tests/unit/test_settings.py:145 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:178 +#: awx/conf/tests/unit/test_settings.py:79 +#: awx/conf/tests/unit/test_settings.py:97 +#: awx/conf/tests/unit/test_settings.py:112 +#: awx/conf/tests/unit/test_settings.py:127 +#: awx/conf/tests/unit/test_settings.py:143 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 #: awx/conf/tests/unit/test_settings.py:189 -#: awx/conf/tests/unit/test_settings.py:205 -#: awx/conf/tests/unit/test_settings.py:226 -#: awx/conf/tests/unit/test_settings.py:249 -#: awx/conf/tests/unit/test_settings.py:263 -#: awx/conf/tests/unit/test_settings.py:287 -#: awx/conf/tests/unit/test_settings.py:307 -#: awx/conf/tests/unit/test_settings.py:324 -#: awx/conf/tests/unit/test_settings.py:337 -#: awx/conf/tests/unit/test_settings.py:351 -#: awx/conf/tests/unit/test_settings.py:387 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -1077,36 +1097,36 @@ msgstr "Funcionalidad %s no está habilitada en la licencia activa." msgid "Features not found in active license." msgstr "Funcionalidades no encontradas en la licencia activa." -#: awx/main/access.py:525 awx/main/access.py:592 awx/main/access.py:717 -#: awx/main/access.py:987 awx/main/access.py:1222 awx/main/access.py:1619 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "Recurso está siendo usado por trabajos en ejecución" -#: awx/main/access.py:636 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "Imposible modificar el inventario en un servidor." -#: awx/main/access.py:653 awx/main/access.py:698 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "No es posible asociar dos elementos de diferentes inventarios." -#: awx/main/access.py:686 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "Imposible cambiar el inventario en un grupo." -#: awx/main/access.py:907 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "Imposible cambiar la organización en un equipo." -#: awx/main/access.py:920 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "El rol {} no puede ser asignado a un equipo." -#: awx/main/access.py:922 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "El admin_role para un usuario no puede ser asignado a un equipo" -#: awx/main/access.py:1692 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1124,11 +1144,13 @@ msgstr "Activar flujo de actividad" #: awx/main/conf.py:18 msgid "Enable capturing activity for the Tower activity stream." -msgstr "Activar la captura de actividades para el flujo de actividad de Tower." +msgstr "" +"Activar la captura de actividades para el flujo de actividad de Tower." #: awx/main/conf.py:27 msgid "Enable Activity Stream for Inventory Sync" -msgstr "Habilitar el flujo de actividad para la sincronización de inventarios." +msgstr "" +"Habilitar el flujo de actividad para la sincronización de inventarios." #: awx/main/conf.py:28 msgid "" @@ -1160,8 +1182,8 @@ msgid "" "Allow Tower to email Admin users for system events that may require " "attention." msgstr "" -"Permitir a Tower enviar correo a usuarios Admin para eventos del sistema que " -"puedan requerir su atención." +"Permitir a Tower enviar correo a usuarios Admin para eventos del sistema que" +" puedan requerir su atención." #: awx/main/conf.py:57 msgid "Base URL of the Tower host" @@ -1169,8 +1191,8 @@ msgstr "Dirección base URL para el servidor Tower" #: awx/main/conf.py:58 msgid "" -"This setting is used by services like notifications to render a valid url to " -"the Tower host." +"This setting is used by services like notifications to render a valid url to" +" the Tower host." msgstr "" "Este configuración es utilizada por servicios cono notificaciones para " "mostrar una url válida al servidor Tower." @@ -1181,24 +1203,18 @@ msgstr "Cabeceras de servidor remoto" #: awx/main/conf.py:68 msgid "" -"HTTP headers and meta keys to search to determine remote host name or IP. " -"Add additional items to this list, such as \"HTTP_X_FORWARDED_FOR\", if " -"behind a reverse proxy.\n" +"HTTP headers and meta keys to search to determine remote host name or IP. Add additional items to this list, such as \"HTTP_X_FORWARDED_FOR\", if behind a reverse proxy.\n" "\n" -"Note: The headers will be searched in order and the first found remote host " -"name or IP will be used.\n" +"Note: The headers will be searched in order and the first found remote host name or IP will be used.\n" "\n" "In the below example 8.8.8.7 would be the chosen IP address.\n" "X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" "Host: 127.0.0.1\n" "REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']" msgstr "" -"Cabeceras HTTP y claves-meta para buscar determinado nombre de servidor o " -"IP. Añadir elementos adicionales a la lista, como \"HTTP_X_FORWARDED_FOR\", " -"si se está detrás de un proxy inverso.\n" +"Cabeceras HTTP y claves-meta para buscar determinado nombre de servidor o IP. Añadir elementos adicionales a la lista, como \"HTTP_X_FORWARDED_FOR\", si se está detrás de un proxy inverso.\n" "\n" -"Note: Las cabeceras serán buscadas en el orden y el primer servidor remoto " -"encontrado a través del nombre de servidor o IP, será utilizado.\n" +"Note: Las cabeceras serán buscadas en el orden y el primer servidor remoto encontrado a través del nombre de servidor o IP, será utilizado.\n" "\n" "En el siguiente ejemplo, la dirección IP 8.8.8.7 debería ser escogida.\n" "X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" @@ -1225,18 +1241,18 @@ msgstr "Módulos Ansible autorizados para ejecutar trabajos Ad Hoc" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "Lista de módulos permitidos para su uso con trabajos ad-hoc." -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "Trabajos" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "Habilitar aislamiento de trabajo" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." @@ -1244,67 +1260,68 @@ msgstr "" "Aísla un trabajo Ansible de partes protegidas del sistema Tower para " "prevenir la exposición de información sensible." -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "Ruta de ejecución de un trabajo aislado" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" "Crear directorios de trabajo temporales en esta ubicación para trabajos " "aislados." -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "Rutas a ocultar para los trabajos aislados." -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "Rutas adicionales a aislar para los procesos aislados." -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "Rutas a exponer para los trabajos aislados." -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" -"Whitelist of paths that would otherwise be hidden to expose to isolated jobs." +"Whitelist of paths that would otherwise be hidden to expose to isolated " +"jobs." msgstr "" "Lista blanca de rutas que de otra manera serían escondidas para exponer a " "trabajos aislados." -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "Tamaño máximo a mostrar para la salida estándar." -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -"Tamaño máximo de la salida estándar en bytes para mostrar antes de obligar a " -"que la salida sea descargada." +"Tamaño máximo de la salida estándar en bytes para mostrar antes de obligar a" +" que la salida sea descargada." -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" "Tamaño máximo de la salida estándar para mostrar del evento del trabajo." -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -"Tamaño máximo de la salida estándar en bytes a mostrar para un único trabajo " -"o evento del comando ad hoc. `stdout` terminará con `...` cuando sea " +"Tamaño máximo de la salida estándar en bytes a mostrar para un único trabajo" +" o evento del comando ad hoc. `stdout` terminará con `...` cuando sea " "truncado." -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "Máximo número de trabajos programados." -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." @@ -1313,11 +1330,11 @@ msgstr "" "para ser ejecutado cuando se lanzan desde una programación antes de que no " "se creen más." -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "Plugins de Ansible callback" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." @@ -1325,11 +1342,11 @@ msgstr "" "Lista de rutas a buscar para plugins callback adicionales a ser utilizados " "cuando se ejecutan trabajos." -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "Tiempo de espera por defecto para el trabajo" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " @@ -1339,131 +1356,142 @@ msgstr "" "indicar que ningún tiempo de espera será impuesto. Un tiempo de espera " "establecido en una plantilla de trabajo individual reemplazará éste." -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "Tiempo de espera por defecto para la actualización del inventario." -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" "Tiempo máximo a permitir la ejecución de una actualización del inventario. " -"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " -"tiempo de espera establecido en una fuente de inventario individual " +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un" +" tiempo de espera establecido en una fuente de inventario individual " "reemplazará éste." -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "Tiempo de espera por defecto para la actualización de un proyecto" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" "Tiempo máximo a permitir la ejecución de una actualización del proyecto. " -"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " -"tiempo de espera establecido en una plantilla individual reemplazará éste." +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un" +" tiempo de espera establecido en una plantilla individual reemplazará éste." -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "Agregación de registros" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "Hostname/IP donde los logs externos serán enviados." -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:275 awx/main/conf.py:290 -#: awx/main/conf.py:302 awx/main/conf.py:311 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "Registros" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "Puerto de agregación de registros" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +#, fuzzy +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -"Puerto en el agregador de registros donde enviar los registros (si es " -"necesario)." +"El puerto del Agregador de Logs al cual enviar logs (si es requerido y no " +"está definido en el Agregador de Logs)." -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "Tipo de agregación de registros." -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "Formato de mensajes para el agregador de registros escogidos." -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "Usuario del agregador de registros" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "Usuario para el agregador de registros externo (si es necesario)." -#: awx/main/conf.py:273 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "Contraseña/Token del agregador de registros" -#: awx/main/conf.py:274 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -"Contraseña o token de autentificación para el agregador de registros externo " -"(si es necesario)." +"Contraseña o token de autentificación para el agregador de registros externo" +" (si es necesario)." -#: awx/main/conf.py:283 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "Registrados desde los que enviar los datos de los registros agregados" -#: awx/main/conf.py:284 +#: awx/main/conf.py:289 msgid "" -"List of loggers that will send HTTP logs to the collector, these can include " -"any or all of: \n" +"List of loggers that will send HTTP logs to the collector, these can include any or all of: \n" "awx - Tower service logs\n" "activity_stream - activity stream records\n" "job_events - callback data from Ansible job events\n" "system_tracking - facts gathered from scan jobs." msgstr "" -"Lista de registradores que enviarán registros HTTP al colector, éstos pueden " -"incluir cualquier o todos ellos: \n" +"Lista de registradores que enviarán registros HTTP al colector, éstos pueden incluir cualquier o todos ellos: \n" "awx - Servicio de registros Tower\n" "activity_stream - Registros de flujo de actividad\n" "job_events - Datos callback desde los eventos de trabajo Ansible\n" "system_tracking - Facts obtenidos por los trabajos escaneados." -#: awx/main/conf.py:297 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "Sistema de registros tratará los facts individualmente." -#: awx/main/conf.py:298 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " -"orother item found in a scan, allowing for greater search query granularity. " -"If unset, facts will be sent as a single dictionary, allowing for greater " +"orother item found in a scan, allowing for greater search query granularity." +" If unset, facts will be sent as a single dictionary, allowing for greater " "efficiency in fact processing." msgstr "" "Si se establece, los facts del sistema de rastreo serán enviados por cada " "paquete, servicio u otro elemento encontrado en el escaneo, permitiendo " "mayor granularidad en la consulta de búsqueda. Si no se establece, lo facts " -"serán enviados como un único diccionario, permitiendo mayor eficiencia en el " -"proceso de facts." +"serán enviados como un único diccionario, permitiendo mayor eficiencia en el" +" proceso de facts." -#: awx/main/conf.py:309 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "Habilitar registro externo" -#: awx/main/conf.py:310 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "Habilitar el envío de registros a un agregador de registros externo." +#: awx/main/conf.py:323 +#, fuzzy +msgid "Cluster-wide Tower unique identifier." +msgstr "Indentificador de Torre único a través del cluster." + +#: awx/main/conf.py:324 +#, fuzzy +msgid "Useful to uniquely identify Tower instances." +msgstr "Útil para identificar instancias de Torre." + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "Entidad creada" @@ -1506,43 +1534,43 @@ msgstr "Módulo no soportado para comandos ad hoc." msgid "No argument passed to %s module." msgstr "Ningún argumento pasado al módulo %s." -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:752 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "Servidor fallido" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:753 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "Servidor OK" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:756 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "Servidor no alcanzable" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:755 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "Servidor omitido" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:783 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "Debug" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:784 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "Nivel de detalle" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:785 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "Obsoleto" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:786 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "Advertencia" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:787 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "Advertencia del sistema" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:788 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "Error" @@ -1609,31 +1637,31 @@ msgstr "Amazon Web Services" msgid "Rackspace" msgstr "Rackspace" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "VMware vCenter" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "Red Hat Satellite 6" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "Red Hat CloudForms" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "Google Compute Engine" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "Microsoft Azure Classic (obsoleto)" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "Microsoft Azure Resource Manager" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "OpenStack" @@ -1734,8 +1762,8 @@ msgid "" "Passphrase to unlock SSH private key if encrypted (or \"ASK\" to prompt the " "user for machine credentials)." msgstr "" -"Frase de contraseña para desbloquear la clave privada SSH si está cifrada (o " -"\"ASK\" para solicitar al usuario por credenciales de máquina)." +"Frase de contraseña para desbloquear la clave privada SSH si está cifrada (o" +" \"ASK\" para solicitar al usuario por credenciales de máquina)." #: awx/main/models/credential.py:161 msgid "Privilege escalation method." @@ -1826,7 +1854,14 @@ msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" "Desbloquear clave SSH debe ser establecido cuando la clave SSH está cifrada." -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +#, fuzzy +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" +"Desbloqueo de la llave SSH no debería ser establecido cuando la llave SSH no" +" está enciptada." + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "EL credencial no puede ser asignado a ambos: un usuario y un equipo." @@ -1845,82 +1880,82 @@ msgid "" "Arbitrary JSON structure of module facts captured at timestamp for a single " "host." msgstr "" -"Estructura de JSON arbitraria de módulos facts capturados en la fecha y hora " -"para un único servidor." +"Estructura de JSON arbitraria de módulos facts capturados en la fecha y hora" +" para un único servidor." -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "inventarios" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "Organización que contiene este inventario." -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "Variables de inventario en formato JSON o YAML." -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" "Indicador que establece si algún servidor en este inventario ha fallado." -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "Número total de servidores en este inventario." -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "Número de servidores en este inventario con fallos actuales." -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "Número total de grupos en este inventario." -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "Número de grupos en este inventario con fallos actuales." -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" "Indicador que establece si el inventario tiene alguna fuente de externa de " "inventario." -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" "Número total de inventarios de origen externo configurado dentro de este " "inventario." -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" "Número de inventarios de origen externo en este inventario con errores." -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "¿Está este servidor funcionando y disponible para ejecutar trabajos?" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" "El valor usado por el inventario de fuente remota para identificar de forma " "única el servidor" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "Variables del servidor en formato JSON o YAML." -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" "Indicador que establece si el último trabajo ha fallado para este servidor." -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." @@ -1928,42 +1963,43 @@ msgstr "" "Indicador que establece si este servidor fue creado/actualizado desde algún " "inventario de fuente externa." -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "Fuente(s) del inventario que crearon o modificaron este servidor." -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "Grupo de variables en formato JSON o YAML." -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "Hosts associated directly with this group." -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" "Número total de servidores directamente o indirectamente en este grupo." -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" "Indicador que establece si este grupo tiene algunos servidores con fallos " "actuales." -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "Número de servidores en este grupo con fallos actuales." -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "Número total de grupos hijo dentro de este grupo." -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." -msgstr "Número de grupos hijo dentro de este grupo que tienen fallos actuales." +msgstr "" +"Número de grupos hijo dentro de este grupo que tienen fallos actuales." -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." @@ -1971,36 +2007,36 @@ msgstr "" "Indicador que establece si este grupo fue creado/actualizado desde un " "inventario de fuente externa." -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "Fuente(s) de inventario que crearon o modificaron este grupo." -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:411 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "Manual" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "Fichero local, directorio o script" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "Servidores cloud en Rackspace" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "Amazon EC2" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "Script personalizado" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "Variables para la fuente del inventario en formato YAML o JSON." -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." @@ -2008,92 +2044,92 @@ msgstr "" "Lista de expresiones de filtrado separadas por coma (sólo EC2). Servidores " "son importados cuando ALGÚN filtro coincide." -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" "Limitar grupos creados automáticamente desde la fuente del inventario (sólo " "EC2)" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" "Sobrescribir grupos locales y servidores desde una fuente remota del " "inventario." -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" "Sobrescribir las variables locales desde una fuente remota del inventario." -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "Zona de disponibilidad" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "Id de imagen" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "ID de instancia" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "Tipo de instancia" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "Nombre clave" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "Región" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "Grupo de seguridad" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "Etiquetas" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "VPC ID" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "Etiqueta ninguna" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -"Fuentes de inventario basados en Cloud (como %s) requieren credenciales para " -"identificar los correspondientes servicios cloud." +"Fuentes de inventario basados en Cloud (como %s) requieren credenciales para" +" identificar los correspondientes servicios cloud." -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "Un credencial es necesario para una fuente cloud." -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "Región %(source)s inválida: %(region)s" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "Expresión de filtro inválida: %(filter)s" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "Grupo escogido inválido: %(choice)s" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." @@ -2101,11 +2137,11 @@ msgstr "" "Imposible configurar este elemento para sincronización cloud. Está " "administrado actualmente por %s." -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "Contenido del script de inventario" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "Organización propietario de este script de inventario" @@ -2124,139 +2160,142 @@ msgstr "" #: awx/main/models/jobs.py:268 msgid "Job Template must provide 'inventory' or allow prompting for it." msgstr "" -"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." +"La plantilla de trabajo debe proporcionar 'inventory' o permitir " +"solicitarlo." #: awx/main/models/jobs.py:272 msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." +"La plantilla de trabajo debe proporcionar 'inventory' o permitir " +"solicitarlo." -#: awx/main/models/jobs.py:370 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "No se puede sustituir job_type a o desde un trabajo de escaneo." -#: awx/main/models/jobs.py:373 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" "El inventario no puede ser cambiado en el tiempo de ejecución para trabajos " "de escaneo." -#: awx/main/models/jobs.py:439 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "Revisión SCM" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -"La revisión SCM desde el proyecto usado para este trabajo, si está disponible" +"La revisión SCM desde el proyecto usado para este trabajo, si está " +"disponible" -#: awx/main/models/jobs.py:448 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -"La tarea de actualización de SCM utilizado para asegurarse que los playbooks " -"estaban disponibles para la ejecución del trabajo" +"La tarea de actualización de SCM utilizado para asegurarse que los playbooks" +" estaban disponibles para la ejecución del trabajo" -#: awx/main/models/jobs.py:651 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "Resumen de trabajos de servidor" -#: awx/main/models/jobs.py:754 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "Fallo del servidor" -#: awx/main/models/jobs.py:757 awx/main/models/jobs.py:771 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "No más servidores" -#: awx/main/models/jobs.py:758 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "Sondeo al servidor" -#: awx/main/models/jobs.py:759 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "Servidor Async OK" -#: awx/main/models/jobs.py:760 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "Servidor Async fallido" -#: awx/main/models/jobs.py:761 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "Elemento OK" -#: awx/main/models/jobs.py:762 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "Elemento fallido" -#: awx/main/models/jobs.py:763 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "Elemento omitido" -#: awx/main/models/jobs.py:764 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "Reintentar servidor" -#: awx/main/models/jobs.py:766 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "Diferencias del fichero" -#: awx/main/models/jobs.py:767 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "Playbook iniciado" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "Handlers ejecutándose" -#: awx/main/models/jobs.py:769 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "Incluyendo fichero" -#: awx/main/models/jobs.py:770 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "Ningún servidor corresponde" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "Tarea iniciada" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "Variables solicitadas" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "Obteniendo facts" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "internal: en la importación para el servidor" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "internal: en la no importación para el servidor" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "Jugada iniciada" -#: awx/main/models/jobs.py:779 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "Playbook terminado" -#: awx/main/models/jobs.py:1189 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "Eliminar trabajos más antiguos que el ńumero de días especificado" -#: awx/main/models/jobs.py:1190 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" "Eliminar entradas del flujo de actividad más antiguos que el número de días " "especificado" -#: awx/main/models/jobs.py:1191 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" "Limpiar y/o reducir la granularidad de los datos del sistema de rastreo" @@ -2318,7 +2357,8 @@ msgid "Token is expired" msgstr "Token está expirado" #: awx/main/models/organization.py:213 -msgid "The maximum number of allowed sessions for this user has been exceeded." +msgid "" +"The maximum number of allowed sessions for this user has been exceeded." msgstr "" "El número máximo de sesiones permitidas para este usuario ha sido excedido." @@ -2326,11 +2366,11 @@ msgstr "" msgid "Invalid token" msgstr "Token inválido" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "Razón por la que el token fue invalidado." -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "Razón especificada inválida" @@ -2346,7 +2386,12 @@ msgstr "Mercurial" msgid "Subversion" msgstr "Subversion" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +#, fuzzy +msgid "Red Hat Insights" +msgstr "Red Hat Insights" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." @@ -2354,68 +2399,68 @@ msgstr "" "Ruta local (relativa a PROJECTS_ROOT) que contiene playbooks y ficheros " "relacionados para este proyecto." -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "Tipo SCM" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" "Especifica el sistema de control de fuentes utilizado para almacenar el " "proyecto." -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "SCM URL" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "La ubicación donde el proyecto está alojado." -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "Rama SCM" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "Especificar rama, etiqueta o commit para checkout." -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" "Descartar cualquier cambio local antes de la sincronización del proyecto." -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "Eliminar el proyecto antes de la sincronización." -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "La cantidad de tiempo a ejecutar antes de que la tarea sea cancelada." -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "SCM URL inválida." -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "SCM URL es obligatoria." -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "TIpo de credenciales deben ser 'scm'." -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "Credencial inválida." -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" "Actualizar el proyecto mientras un trabajo es ejecutado que usa este " "proyecto." -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." @@ -2424,15 +2469,15 @@ msgstr "" "ejecutó para que la nueva actualización del proyecto será ejecutada como un " "trabajo dependiente." -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "La última revisión obtenida por una actualización del proyecto." -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "Ficheros Playbook" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "Lista de playbooks encontrados en este proyecto" @@ -2596,50 +2641,50 @@ msgstr "Sin fuente externa" msgid "Updating" msgstr "Actualizando" -#: awx/main/models/unified_jobs.py:412 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "Relanzar" -#: awx/main/models/unified_jobs.py:413 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "Callback" -#: awx/main/models/unified_jobs.py:414 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "Programado" -#: awx/main/models/unified_jobs.py:415 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "Dependencia" -#: awx/main/models/unified_jobs.py:416 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "Flujo de trabajo" -#: awx/main/models/unified_jobs.py:417 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "Sincronizar" -#: awx/main/models/unified_jobs.py:463 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "El nodo tower donde el trabajo se ejecutó." -#: awx/main/models/unified_jobs.py:489 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "La fecha y hora que el trabajo fue puesto en la cola para iniciarse." -#: awx/main/models/unified_jobs.py:495 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "La fecha y hora en la que el trabajo finalizó su ejecución." -#: awx/main/models/unified_jobs.py:501 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "Tiempo transcurrido en segundos que el trabajo se ejecutó. " -#: awx/main/models/unified_jobs.py:523 +#: awx/main/models/unified_jobs.py:526 msgid "" -"A status field to indicate the state of the job if it wasn't able to run and " -"capture stdout" +"A status field to indicate the state of the job if it wasn't able to run and" +" capture stdout" msgstr "" "Un campo de estado que indica el estado del trabajo si éste no fue capaz de " "ejecutarse y obtener la salida estándar." @@ -2653,11 +2698,11 @@ msgstr "" "{} #{} tuvo estado {} en Ansible Tower, ver detalles en {}\n" "\n" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "Error enviando mensajes: {}" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "Error enviando mensaje a hipchat: {}" @@ -2697,58 +2742,58 @@ msgid "" "Job spawned from workflow could not start because it was missing a related " "resource such as project or inventory" msgstr "" -"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no se " -"encontraron los recursos relacionados como un proyecto o un inventario." +"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no se" +" encontraron los recursos relacionados como un proyecto o un inventario." -#: awx/main/tasks.py:180 +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "Ansible Tower uso de servidores por encima de 90%" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "Licencia de Ansible Tower expirará pronto" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "status_str debe ser 'succeeded' o 'failed'" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "Imposible convertir \"%s\" a booleano" -#: awx/main/utils/common.py:245 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "Tipo de SCM no soportado \"%s\"" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:264 -#: awx/main/utils/common.py:283 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "URL %s inválida" -#: awx/main/utils/common.py:254 awx/main/utils/common.py:292 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "URL %s no soportada" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "Servidor \"%s\" no soportado para URL file://" -#: awx/main/utils/common.py:296 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "Servidor es obligatorio para URL %s" -#: awx/main/utils/common.py:314 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "Usuario debe ser \"git\" para acceso SSH a %s." -#: awx/main/utils/common.py:320 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "Usuario debe ser \"hg\" para acceso SSH a %s." @@ -2783,10 +2828,11 @@ msgstr "Al menos una clave privada es necesaria." #: awx/main/validators.py:126 #, python-format msgid "" -"At least %(min_keys)d private keys are required, only %(key_count)d provided." +"At least %(min_keys)d private keys are required, only %(key_count)d " +"provided." msgstr "" -"Al menos %(min_keys)d claves privadas son necesarias, sólo %(key_count)d han " -"sido proporcionadas." +"Al menos %(min_keys)d claves privadas son necesarias, sólo %(key_count)d han" +" sido proporcionadas." #: awx/main/validators.py:129 #, python-format @@ -2829,7 +2875,8 @@ msgstr "" #: awx/main/validators.py:145 #, python-format msgid "" -"No more than %(max_certs)d certificates are allowed, %(cert_count)d provided." +"No more than %(max_certs)d certificates are allowed, %(cert_count)d " +"provided." msgstr "" "No más de %(max_certs)d certificados están permitidos, %(cert_count)d han " "sido proporcionados." @@ -2870,195 +2917,195 @@ msgstr "Error de servidor" msgid "A server error has occurred." msgstr "Un error en el servidor ha ocurrido." -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "Chicago" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "Dallas/Ft. Worth" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "Northern Virginia" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:632 msgid "London" msgstr "London" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "Sydney" -#: awx/settings/defaults.py:630 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "Hong Kong" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "Este de EE.UU. (Virginia del norte)" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "Este de EE.UU. (Ohio)" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "Oeste de EE.UU. (Oregón)" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "Oeste de EE.UU (California del norte)" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "Canada (Central)" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "UE (Fráncfort)" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "UE (Irlanda)" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "UE (Londres)" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "Asia Pacífico (Singapur)" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "Asia Pacífico (Sídney)" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "Asia Pacífico (Tokio)" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "Asia Pacífico (Seúl)" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "Asia Pacífico (Bombay)" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "América del sur (São Paulo)" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "Oeste de EE.UU. (GovCloud)" -#: awx/settings/defaults.py:672 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "China (Pekín)" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "Este de EE.UU. (B)" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "Este de EE.UU. (C)" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "Este de EE.UU. (D)" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "EE.UU. Central (A)" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "EE.UU. Central (B)" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "EE.UU. Central (C)" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "EE.UU. Central (F)" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "Oeste de Europa (B)" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "Oeste de Europa (C)" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "Oeste de Europa (D)" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "Este de Asia (A)" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "Este de Asia (B)" -#: awx/settings/defaults.py:733 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "Este de Asia (C)" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "EE.UU. Central" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "Este de EE.UU." -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "Este de EE.UU. 2" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "Norte-centro de EE.UU." -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "Sur-Centro de EE.UU." -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "Oeste de EE.UU." -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "Norte de Europa" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "Oeste de Europa" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "Este de Asia Pacífico" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "Sudeste de Asia Pacífico" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "Este de Japón" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "Oeste de Japón" -#: awx/settings/defaults.py:769 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "Sur de Brasil" @@ -3068,8 +3115,7 @@ msgstr "Inicio de sesión único (SSO)" #: awx/sso/conf.py:27 msgid "" -"Mapping to organization admins/users from social auth accounts. This " -"setting\n" +"Mapping to organization admins/users from social auth accounts. This setting\n" "controls which users are placed into which Tower organizations based on\n" "their username and email address. Dictionary keys are organization names.\n" "organizations will be created if not present if the license allows for\n" @@ -3081,109 +3127,78 @@ msgid "" "\n" "- admins: None, True/False, string or list of strings.\n" " If None, organization admins will not be updated.\n" -" If True, all users using social auth will automatically be added as " -"admins\n" +" If True, all users using social auth will automatically be added as admins\n" " of the organization.\n" " If False, no social auth users will be automatically added as admins of\n" " the organization.\n" " If a string or list of strings, specifies the usernames and emails for\n" " users who will be added to the organization. Strings in the format\n" -" \"//\" will be interpreted as JavaScript regular " -"expressions and\n" -" may also be used instead of string literals; only \"i\" and \"m\" are " -"supported\n" +" \"//\" will be interpreted as JavaScript regular expressions and\n" +" may also be used instead of string literals; only \"i\" and \"m\" are supported\n" " for flags.\n" "- remove_admins: True/False. Defaults to True.\n" -" If True, a user who does not match will be removed from the " -"organization's\n" +" If True, a user who does not match will be removed from the organization's\n" " administrative list.\n" -"- users: None, True/False, string or list of strings. Same rules apply as " -"for\n" +"- users: None, True/False, string or list of strings. Same rules apply as for\n" " admins.\n" "- remove_users: True/False. Defaults to True. Same rules as apply for \n" " remove_admins." msgstr "" -"Relación de usuarios/administradores de organización desde sus cuentas de " -"autentificación social. \n" -"Esta configuración controla qué usuarios están establecidos dentro de qué " -"organización Tower basándose\n" -"en sus nombre de usuario y dirección de correo. Claves son nombres de " -"organizaciones,serán creados si no existen si la licencia actual permite " -"varias organizaciones.\n" -"Valores son diccionarios que definen opciones para cada miembro de la " -"organización.\n" -" Para cada organización es posible especificar qué usuarios son " -"automáticamente usuarios\n" -"de la organización y también qué usuarios pueden administrar la " -"organización:\n" +"Relación de usuarios/administradores de organización desde sus cuentas de autentificación social. \n" +"Esta configuración controla qué usuarios están establecidos dentro de qué organización Tower basándose\n" +"en sus nombre de usuario y dirección de correo. Claves son nombres de organizaciones,serán creados si no existen si la licencia actual permite varias organizaciones.\n" +"Valores son diccionarios que definen opciones para cada miembro de la organización.\n" +" Para cada organización es posible especificar qué usuarios son automáticamente usuarios\n" +"de la organización y también qué usuarios pueden administrar la organización:\n" "\n" "- admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" " Si None, administradores de organización no serán actualizados.\n" -" Si True, todos los usuarios usando identificación social serán " -"automáticamente\n" +" Si True, todos los usuarios usando identificación social serán automáticamente\n" " añadidos como administradores de la organización.\n" -" Si False, ningún usuario con identificación social será automáticamente " -"añadido\n" +" Si False, ningún usuario con identificación social será automáticamente añadido\n" " como administrador de la organización\n" -" Si una cadena o lista de cadenas, especifica el nombre de usuario y " -"direcciones de correo\n" -" para los usuarios que serán añadidos a la organización. Cadenas en " -"formato\n" -" \"//\" serán interpretados como expresiones regulares de " -"Javascript y\n" -" podría ser utilizadas en vez de cadenas de texto literales; sólo \"i\" y " -"\"m\" están\n" +" Si una cadena o lista de cadenas, especifica el nombre de usuario y direcciones de correo\n" +" para los usuarios que serán añadidos a la organización. Cadenas en formato\n" +" \"//\" serán interpretados como expresiones regulares de Javascript y\n" +" podría ser utilizadas en vez de cadenas de texto literales; sólo \"i\" y \"m\" están\n" " soportadas como modificadores.\n" "- remove_admins: True/False. Por defecto a True.\n" -" Si True, un usuario que no corresponda será eliminado de la lista de " -"administradores\n" +" Si True, un usuario que no corresponda será eliminado de la lista de administradores\n" " de la organización.\n" -"- users: None, True/False, cadena de texto o lista de cadenas de texto. Se " -"aplica\n" +"- users: None, True/False, cadena de texto o lista de cadenas de texto. Se aplica\n" " la misma regla que para admins.\n" -"- remove_users: True/False. Por defecto a True. Se aplican las mismas reglas " -"que\n" +"- remove_users: True/False. Por defecto a True. Se aplican las mismas reglas que\n" " para remove_admins." #: awx/sso/conf.py:76 msgid "" "Mapping of team members (users) from social auth accounts. Keys are team\n" "names (will be created if not present). Values are dictionaries of options\n" -"for each team's membership, where each can contain the following " -"parameters:\n" +"for each team's membership, where each can contain the following parameters:\n" "\n" "- organization: string. The name of the organization to which the team\n" " belongs. The team will be created if the combination of organization and\n" " team name does not exist. The organization will first be created if it\n" -" does not exist. If the license does not allow for multiple " -"organizations,\n" +" does not exist. If the license does not allow for multiple organizations,\n" " the team will always be assigned to the single default organization.\n" "- users: None, True/False, string or list of strings.\n" " If None, team members will not be updated.\n" " If True/False, all social auth users will be added/removed as team\n" " members.\n" -" If a string or list of strings, specifies expressions used to match " -"users.\n" +" If a string or list of strings, specifies expressions used to match users.\n" " User will be added as a team member if the username or email matches.\n" -" Strings in the format \"//\" will be interpreted as " -"JavaScript\n" -" regular expressions and may also be used instead of string literals; only " -"\"i\"\n" +" Strings in the format \"//\" will be interpreted as JavaScript\n" +" regular expressions and may also be used instead of string literals; only \"i\"\n" " and \"m\" are supported for flags.\n" "- remove: True/False. Defaults to True. If True, a user who does not match\n" " the rules above will be removed from the team." msgstr "" -"Relación de miembros de equipo (usuarios) desde sus cuentas de " -"autentificación social. \n" -"Claves son nombres de equipo (serán creados si no existen). Valores son " -"diccionario de opciones\n" -"para cada miembro del equipo, donde cada uno de ellos pueden contener los " -"siguientes parámetros:\n" +"Relación de miembros de equipo (usuarios) desde sus cuentas de autentificación social. \n" +"Claves son nombres de equipo (serán creados si no existen). Valores son diccionario de opciones\n" +"para cada miembro del equipo, donde cada uno de ellos pueden contener los siguientes parámetros:\n" "\n" -"- organization: cadena de texto. El nombre de la organización a la cual el " -"equipo\n" -" pertenece. El equipo será creado si la combinación de nombre de " -"organización y \n" +"- organization: cadena de texto. El nombre de la organización a la cual el equipo\n" +" pertenece. El equipo será creado si la combinación de nombre de organización y \n" " equipo no existe. La organización será primero creada si\n" " no existe. Si la licencia no permite múltiples organizaciones,\n" " el equipo será siempre asignado a una única organización por defecto.\n" @@ -3191,17 +3206,12 @@ msgstr "" " Si None, miembros del equipo no serán actualizados.\n" " Si True/False, todos los usuarios autentificados socialmente serán\n" " añadidos/eliminados como miembros del equipo.\n" -" Si una cadena de texto o lista de cadenas de texto, especifica expresiones " -"a usar\n" -" para encontrar usuarios. Usuario será añadido como miembro del equipo si " -"el nombre de usuario o la dirección de correo electrónica coincide.\n" -" Cadenas de texto en formato \"//\" son interpretadas " -"como\n" -" expresiones regulares JavaScript y podrían ser usadas en vez de cadenas " -"de texto literales:\n" +" Si una cadena de texto o lista de cadenas de texto, especifica expresiones a usar\n" +" para encontrar usuarios. Usuario será añadido como miembro del equipo si el nombre de usuario o la dirección de correo electrónica coincide.\n" +" Cadenas de texto en formato \"//\" son interpretadas como\n" +" expresiones regulares JavaScript y podrían ser usadas en vez de cadenas de texto literales:\n" " sólo \"i\" y \"m\" están soportadas como modificadores (flags).\n" -"- remove: True/False. Por defecto a True. Si True, un usuario que no " -"corresponda\n" +"- remove: True/False. Por defecto a True. Si True, un usuario que no corresponda\n" " con las reglas indicadas anteriormente será eliminado del equipo." #: awx/sso/conf.py:119 @@ -3230,14 +3240,14 @@ msgstr "Autentificación social - Campos usuario" #: awx/sso/conf.py:158 msgid "" -"When set to an empty list `[]`, this setting prevents new user accounts from " -"being created. Only users who have previously logged in using social auth or " -"have a user account with a matching email address will be able to login." +"When set to an empty list `[]`, this setting prevents new user accounts from" +" being created. Only users who have previously logged in using social auth " +"or have a user account with a matching email address will be able to login." msgstr "" "Cuando se establece una lista vacía `[]`, esta configuración previene que " "nuevos usuarios puedan ser creados. Sólo usuarios que previamente han " -"iniciado sesión usando autentificación social o tengan una cuenta de usuario " -"que corresponda con la dirección de correcto podrán iniciar sesión." +"iniciado sesión usando autentificación social o tengan una cuenta de usuario" +" que corresponda con la dirección de correcto podrán iniciar sesión." #: awx/sso/conf.py:176 msgid "LDAP Server URI" @@ -3246,14 +3256,15 @@ msgstr "URI servidor LDAP" #: awx/sso/conf.py:177 msgid "" "URI to connect to LDAP server, such as \"ldap://ldap.example.com:389\" (non-" -"SSL) or \"ldaps://ldap.example.com:636\" (SSL). Multiple LDAP servers may be " -"specified by separating with spaces or commas. LDAP authentication is " +"SSL) or \"ldaps://ldap.example.com:636\" (SSL). Multiple LDAP servers may be" +" specified by separating with spaces or commas. LDAP authentication is " "disabled if this parameter is empty." msgstr "" -"URI para conectar a un servidor LDAP. Por ejemplo \"ldap://ldap.ejemplo." -"com:389\" (no SSL) or \"ldaps://ldap.ejemplo.com:636\" (SSL). Varios " -"servidores LDAP pueden ser especificados separados por espacios o comandos. " -"La autentificación LDAP está deshabilitado si este parámetro está vacío." +"URI para conectar a un servidor LDAP. Por ejemplo " +"\"ldap://ldap.ejemplo.com:389\" (no SSL) or \"ldaps://ldap.ejemplo.com:636\"" +" (SSL). Varios servidores LDAP pueden ser especificados separados por " +"espacios o comandos. La autentificación LDAP está deshabilitado si este " +"parámetro está vacío." #: awx/sso/conf.py:181 awx/sso/conf.py:199 awx/sso/conf.py:211 #: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:259 @@ -3275,10 +3286,11 @@ msgid "" "user account we will use to login to query LDAP for other user information." msgstr "" "DN (Distinguished Name) del usuario a enlazar para todas las consultas de " -"búsqueda. Normalmente en formato \"CN=Algun usuario,OU=Usuarios,DC=ejemplo," -"DC=com\" pero podría ser también especificado como \"DOMINIO\\usuario\" para " -"Active Directory. Ésta es la cuenta de usuario que será utilizada para " -"iniciar sesión para consultar LDAP para la información de otro usuario." +"búsqueda. Normalmente en formato \"CN=Algun " +"usuario,OU=Usuarios,DC=ejemplo,DC=com\" pero podría ser también especificado" +" como \"DOMINIO\\usuario\" para Active Directory. Ésta es la cuenta de " +"usuario que será utilizada para iniciar sesión para consultar LDAP para la " +"información de otro usuario." #: awx/sso/conf.py:209 msgid "LDAP Bind Password" @@ -3304,16 +3316,16 @@ msgstr "Opciones de conexión a LDAP" msgid "" "Additional options to set for the LDAP connection. LDAP referrals are " "disabled by default (to prevent certain LDAP queries from hanging with AD). " -"Option names should be strings (e.g. \"OPT_REFERRALS\"). Refer to https://" -"www.python-ldap.org/doc/html/ldap.html#options for possible options and " -"values that can be set." +"Option names should be strings (e.g. \"OPT_REFERRALS\"). Refer to " +"https://www.python-ldap.org/doc/html/ldap.html#options for possible options " +"and values that can be set." msgstr "" "Opciones adicionales a establecer para la conexión LDAP. Referenciadores " "LDAP están deshabilitados por defecto (para prevenir que ciertas consultas " "LDAP se bloqueen con AD). Los nombres de las opciones deben ser cadenas de " -"texto (p.e. \"OPT_REFERRALS\"). Acuda a https://www.python-ldap.org/doc/html/" -"ldap.html#options para posibles opciones y valores que pueden ser " -"establecidos." +"texto (p.e. \"OPT_REFERRALS\"). Acuda a https://www.python-" +"ldap.org/doc/html/ldap.html#options para posibles opciones y valores que " +"pueden ser establecidos." #: awx/sso/conf.py:252 msgid "LDAP User Search" @@ -3325,7 +3337,8 @@ msgid "" "will be able to login to Tower. The user should also be mapped into an " "Tower organization (as defined in the AUTH_LDAP_ORGANIZATION_MAP setting). " "If multiple search queries need to be supported use of \"LDAPUnion\" is " -"possible. See python-ldap documentation as linked at the top of this section." +"possible. See python-ldap documentation as linked at the top of this " +"section." msgstr "" "Consulta de búsqueda LDAP para la búsqueda de usuarios. Cualquier usuario " "que coincida con el patrón dado será capaz de iniciar sesión en Tower. El " @@ -3358,8 +3371,8 @@ msgstr "Mapa de atributos de usuario LDAP" #: awx/sso/conf.py:292 msgid "" "Mapping of LDAP user schema to Tower API user attributes (key is user " -"attribute name, value is LDAP attribute name). The default setting is valid " -"for ActiveDirectory but users with other LDAP configurations may need to " +"attribute name, value is LDAP attribute name). The default setting is valid" +" for ActiveDirectory but users with other LDAP configurations may need to " "change the values (not the keys) of the dictionary/hash-table." msgstr "" "Relación del esquema de usuarios LDAP a Atributos de usuario Tower API " @@ -3374,12 +3387,12 @@ msgstr "Búsqueda de grupos LDAP" #: awx/sso/conf.py:312 msgid "" -"Users in Tower are mapped to organizations based on their membership in LDAP " -"groups. This setting defines the LDAP search query to find groups. Note that " -"this, unlike the user search above, does not support LDAPSearchUnion." +"Users in Tower are mapped to organizations based on their membership in LDAP" +" groups. This setting defines the LDAP search query to find groups. Note " +"that this, unlike the user search above, does not support LDAPSearchUnion." msgstr "" -"Usuarios en Tower son enlazados a la organización basado en su pertenencia a " -"grupos LDAP. Esta configuración define la consulta de búsqueda LDAP para " +"Usuarios en Tower son enlazados a la organización basado en su pertenencia a" +" grupos LDAP. Esta configuración define la consulta de búsqueda LDAP para " "encontrar grupos. Tenga en cuenta que esto, contrariamente que la búsqueda " "superior, no soporta LDAPSearchUnion." @@ -3389,12 +3402,12 @@ msgstr "Tipo de grupo LDAP" #: awx/sso/conf.py:330 msgid "" -"The group type may need to be changed based on the type of the LDAP server. " -"Values are listed at: http://pythonhosted.org/django-auth-ldap/groups." -"html#types-of-groups" +"The group type may need to be changed based on the type of the LDAP server." +" Values are listed at: http://pythonhosted.org/django-auth-ldap/groups.html" +"#types-of-groups" msgstr "" -"El tipo de grupo es necesario ser cambiado basado en el tipo del servidor de " -"LDAP. Valores posibles listados en: http://pythonhosted.org/django-auth-" +"El tipo de grupo es necesario ser cambiado basado en el tipo del servidor de" +" LDAP. Valores posibles listados en: http://pythonhosted.org/django-auth-" "ldap/groups.html#types-of-groups" #: awx/sso/conf.py:345 @@ -3423,27 +3436,29 @@ msgid "" "if a member of this group. Only one deny group is supported." msgstr "" "Grupo DN no permitido para iniciar sesión. SI se especifica, el usuario no " -"podrá iniciar sesión si es miembro de este grupo. Sólo un grupo no permitido " -"está soportado." +"podrá iniciar sesión si es miembro de este grupo. Sólo un grupo no permitido" +" está soportado." #: awx/sso/conf.py:376 msgid "LDAP User Flags By Group" msgstr "Indicadores de usuario LDAP por grupo" #: awx/sso/conf.py:377 +#, fuzzy msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" -"Indicadores del perfil de usuario actualizado desde la pertenencia del grupo " -"(clave es el nombre de atributo del usuario, valor es el grupo DN). Éstos " +"Indicadores del perfil de usuario actualizado desde la pertenencia del grupo" +" (clave es el nombre de atributo del usuario, valor es el grupo DN). Éstos " "son campos booleanos en los que se basa si el usuario es miembro del grupo " -"especificado. Hasta ahora sólo is_superuser es configurable utilizando este " -"método. El indicador establece a verdadero o falso en el momento de inicio " -"de sesión basándose en la actual configuración LDAP." +"especificado. Hasta ahora sólo is_superuser y is_system_auditor son " +"configurables utilizando este método. El indicador establece a verdadero o " +"falso en el momento de inicio de sesión basándose en la actual configuración" +" LDAP." #: awx/sso/conf.py:395 msgid "LDAP Organization Map" @@ -3451,56 +3466,29 @@ msgstr "Mapa de organización LDAP" #: awx/sso/conf.py:396 msgid "" -"Mapping between organization admins/users and LDAP groups. This controls " -"what users are placed into what Tower organizations relative to their LDAP " -"group memberships. Keys are organization names. Organizations will be " -"created if not present. Values are dictionaries defining the options for " -"each organization's membership. For each organization it is possible to " -"specify what groups are automatically users of the organization and also " -"what groups can administer the organization.\n" +"Mapping between organization admins/users and LDAP groups. This controls what users are placed into what Tower organizations relative to their LDAP group memberships. Keys are organization names. Organizations will be created if not present. Values are dictionaries defining the options for each organization's membership. For each organization it is possible to specify what groups are automatically users of the organization and also what groups can administer the organization.\n" "\n" " - admins: None, True/False, string or list of strings.\n" " If None, organization admins will not be updated based on LDAP values.\n" -" If True, all users in LDAP will automatically be added as admins of the " -"organization.\n" -" If False, no LDAP users will be automatically added as admins of the " -"organization.\n" -" If a string or list of strings, specifies the group DN(s) that will be " -"added of the organization if they match any of the specified groups.\n" +" If True, all users in LDAP will automatically be added as admins of the organization.\n" +" If False, no LDAP users will be automatically added as admins of the organization.\n" +" If a string or list of strings, specifies the group DN(s) that will be added of the organization if they match any of the specified groups.\n" " - remove_admins: True/False. Defaults to True.\n" -" If True, a user who is not an member of the given groups will be removed " -"from the organization's administrative list.\n" -" - users: None, True/False, string or list of strings. Same rules apply as " -"for admins.\n" -" - remove_users: True/False. Defaults to True. Same rules apply as for " -"remove_admins." +" If True, a user who is not an member of the given groups will be removed from the organization's administrative list.\n" +" - users: None, True/False, string or list of strings. Same rules apply as for admins.\n" +" - remove_users: True/False. Defaults to True. Same rules apply as for remove_admins." msgstr "" -"Relación entre administradores/usuarios de la organización y grupos LDAP. " -"Esto controla qué usuarios son establecidos dentro de qué organización Tower " -"dependiendo de sus pertenencias a grupos LDAP. Clave son nombres de " -"organización. Organizaciones serán creados si no existen. Valores son " -"diccionarios definiendo las opciones para cada miembro de la organización. " -"Para cada organización es posible especificar qué grupos son automáticamente " -"usuarios de la organización y también qué grupos pueden administrar la " -"organización.\n" +"Relación entre administradores/usuarios de la organización y grupos LDAP. Esto controla qué usuarios son establecidos dentro de qué organización Tower dependiendo de sus pertenencias a grupos LDAP. Clave son nombres de organización. Organizaciones serán creados si no existen. Valores son diccionarios definiendo las opciones para cada miembro de la organización. Para cada organización es posible especificar qué grupos son automáticamente usuarios de la organización y también qué grupos pueden administrar la organización.\n" "\n" " - admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" -" Si None, administradores de organización no podrán ser actualizados " -"basándose con los valores LDAP.\n" -" Si True, todos los usuarios en LDAP serán automáticamente añadidos como " -"administradores de la organización.\n" -" Si False, ningún usuario LDAP será automáticamente añadido como " -"administrador de la organización.\n" -" Si una cadena o lista de cadenas de texto, especifica el grupo DN(s) que " -"serán añadidos de la organización si ellos corresponden a alguno de los " -"grupos especificados.\n" +" Si None, administradores de organización no podrán ser actualizados basándose con los valores LDAP.\n" +" Si True, todos los usuarios en LDAP serán automáticamente añadidos como administradores de la organización.\n" +" Si False, ningún usuario LDAP será automáticamente añadido como administrador de la organización.\n" +" Si una cadena o lista de cadenas de texto, especifica el grupo DN(s) que serán añadidos de la organización si ellos corresponden a alguno de los grupos especificados.\n" " - remove_admins: True/False. Por defecto a True.\n" -" Si True, un usuario que no es miembro de los grupos especificados será " -"eliminado de la lista administrativa de la organización.\n" -" - users: None, True/False, string o lista de cadena de texto. Se aplican " -"las mismas reglas que para adminss.\n" -" - remove_users: True/False. Por defecto a True. Se aplica las mismas reglas " -"que para remove_admins." +" Si True, un usuario que no es miembro de los grupos especificados será eliminado de la lista administrativa de la organización.\n" +" - users: None, True/False, string o lista de cadena de texto. Se aplican las mismas reglas que para adminss.\n" +" - remove_users: True/False. Por defecto a True. Se aplica las mismas reglas que para remove_admins." #: awx/sso/conf.py:444 msgid "LDAP Team Map" @@ -3508,39 +3496,23 @@ msgstr "Mapa de equipos LDAP" #: awx/sso/conf.py:445 msgid "" -"Mapping between team members (users) and LDAP groups. Keys are team names " -"(will be created if not present). Values are dictionaries of options for " -"each team's membership, where each can contain the following parameters:\n" +"Mapping between team members (users) and LDAP groups. Keys are team names (will be created if not present). Values are dictionaries of options for each team's membership, where each can contain the following parameters:\n" "\n" -" - organization: string. The name of the organization to which the team " -"belongs. The team will be created if the combination of organization and " -"team name does not exist. The organization will first be created if it does " -"not exist.\n" +" - organization: string. The name of the organization to which the team belongs. The team will be created if the combination of organization and team name does not exist. The organization will first be created if it does not exist.\n" " - users: None, True/False, string or list of strings.\n" " If None, team members will not be updated.\n" " If True/False, all LDAP users will be added/removed as team members.\n" -" If a string or list of strings, specifies the group DN(s). User will be " -"added as a team member if the user is a member of ANY of these groups.\n" -"- remove: True/False. Defaults to True. If True, a user who is not a member " -"of the given groups will be removed from the team." +" If a string or list of strings, specifies the group DN(s). User will be added as a team member if the user is a member of ANY of these groups.\n" +"- remove: True/False. Defaults to True. If True, a user who is not a member of the given groups will be removed from the team." msgstr "" -"Relación entre miembros del equipo (usuarios) y grupos LDAP. Claves son " -"nombres de equipo (serán creados si no existen). Valores son diccionarios de " -"opciones para cada miembro del equipo, donde cada uno puede contener alguno " -"de los siguientes parámetros:\n" +"Relación entre miembros del equipo (usuarios) y grupos LDAP. Claves son nombres de equipo (serán creados si no existen). Valores son diccionarios de opciones para cada miembro del equipo, donde cada uno puede contener alguno de los siguientes parámetros:\n" "\n" -" - organization: cadena de texto. El nombre de la organización a la cual el " -"equipo pertenece. El equipo será creado si la combinación de organización y " -"equipo no existen. La organización será creada primera si no existe.\n" +" - organization: cadena de texto. El nombre de la organización a la cual el equipo pertenece. El equipo será creado si la combinación de organización y equipo no existen. La organización será creada primera si no existe.\n" " - users: None, True/False, cadena o lista de cadenas.\n" " Si None, miembros del equipo no serán actualizados.\n" -" Si True/False, todos los usuarios LDAP serán añadidos/eliminados como " -"miembros del equipo.\n" -" Si una cadena de texto o lista de cadenas de texto, especifica el grupo " -"(DN)s. Usuario será añadido como miembro del equipo si el usuario es miembro " -"de ALGUNO de esos grupos.\n" -"- remove: True/False. Por defecto True. Si True, un usuario que no es " -"miembro del grupo proporcionado será eliminado del equipo." +" Si True/False, todos los usuarios LDAP serán añadidos/eliminados como miembros del equipo.\n" +" Si una cadena de texto o lista de cadenas de texto, especifica el grupo (DN)s. Usuario será añadido como miembro del equipo si el usuario es miembro de ALGUNO de esos grupos.\n" +"- remove: True/False. Por defecto True. Si True, un usuario que no es miembro del grupo proporcionado será eliminado del equipo." #: awx/sso/conf.py:488 msgid "RADIUS Server" @@ -3548,8 +3520,8 @@ msgstr "Servidor RADIUS" #: awx/sso/conf.py:489 msgid "" -"Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " -"setting is empty." +"Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this" +" setting is empty." msgstr "" "Hostname/IP del servidor RADIUS. La autentificación RADIUS se deshabilitará " "si esta configuración está vacía." @@ -3584,8 +3556,8 @@ msgid "" "OAuth2 key and secret for a web application. Ensure that the Google+ API is " "enabled. Provide this URL as the callback URL for your application." msgstr "" -"Crear un proyecto en https://console.developers.google.com/ para obtener una " -"clave OAuth2 y clave secreta para una aplicación web. Asegúrese que la API " +"Crear un proyecto en https://console.developers.google.com/ para obtener una" +" clave OAuth2 y clave secreta para una aplicación web. Asegúrese que la API " "de Google+ API está habilitada. Proporcione esta URL como URL callback para " "su aplicación." @@ -3601,11 +3573,11 @@ msgstr "Clave Google OAuth2" #: awx/sso/conf.py:547 msgid "" -"The OAuth2 key from your web application at https://console.developers." -"google.com/." +"The OAuth2 key from your web application at " +"https://console.developers.google.com/." msgstr "" -"La clave OAuth2 de su dirección web en https://console.developers.google." -"com/." +"La clave OAuth2 de su dirección web en " +"https://console.developers.google.com/." #: awx/sso/conf.py:557 msgid "Google OAuth2 Secret" @@ -3613,11 +3585,11 @@ msgstr "Clave secreta para Google OAuth2" #: awx/sso/conf.py:558 msgid "" -"The OAuth2 secret from your web application at https://console.developers." -"google.com/." +"The OAuth2 secret from your web application at " +"https://console.developers.google.com/." msgstr "" -"La clave secreta OAuth2 de su dirección web en https://console.developers." -"google.com/." +"La clave secreta OAuth2 de su dirección web en " +"https://console.developers.google.com/." #: awx/sso/conf.py:569 msgid "Google OAuth2 Whitelisted Domains" @@ -3642,10 +3614,10 @@ msgid "" "display any other accounts even if the user is logged in with multiple " "Google accounts." msgstr "" -"Argumentos adicionales para iniciar sesión con Google OAuth2. Cuando sólo se " -"permite un único dominio para autentificar, establecer a `{\"hd\": " -"\"sudominio.com\"}` y Google no mostrará otras cuentas incluso si el usuario " -"inició sesión en múltiple cuentas Google." +"Argumentos adicionales para iniciar sesión con Google OAuth2. Cuando sólo se" +" permite un único dominio para autentificar, establecer a `{\"hd\": " +"\"sudominio.com\"}` y Google no mostrará otras cuentas incluso si el usuario" +" inició sesión en múltiple cuentas Google." #: awx/sso/conf.py:596 msgid "Google OAuth2 Organization Map" @@ -3708,15 +3680,15 @@ msgstr "OAuth2 URL Callback para organización Github" #: awx/sso/conf.py:689 awx/sso/conf.py:764 msgid "" -"Create an organization-owned application at https://github.com/organizations/" -"/settings/applications and obtain an OAuth2 key (Client ID) and " -"secret (Client Secret). Provide this URL as the callback URL for your " -"application." +"Create an organization-owned application at " +"https://github.com/organizations//settings/applications and obtain " +"an OAuth2 key (Client ID) and secret (Client Secret). Provide this URL as " +"the callback URL for your application." msgstr "" -"Crear una aplicación propia de la organización en https://github.com/" -"organizations//settings/applications y obtener una clave OAuth2 (ID " -"del cliente ) y clave secreta (Clave secreta del cliente). Proporcione esta " -"URL como URL callback para su aplicación." +"Crear una aplicación propia de la organización en " +"https://github.com/organizations//settings/applications y " +"obtener una clave OAuth2 (ID del cliente ) y clave secreta (Clave secreta " +"del cliente). Proporcione esta URL como URL callback para su aplicación." #: awx/sso/conf.py:693 awx/sso/conf.py:704 awx/sso/conf.py:714 #: awx/sso/conf.py:726 awx/sso/conf.py:737 awx/sso/conf.py:749 @@ -3753,7 +3725,7 @@ msgid "" "https://github.com//." msgstr "" "El nombre de su organización de su GitHub, el utilizado en su URL de " -"organización: https://github.com//." +"organización: https://github.com//." #: awx/sso/conf.py:735 msgid "GitHub Organization OAuth2 Organization Map" @@ -3786,8 +3758,8 @@ msgstr "ID de equipo GitHub" #: awx/sso/conf.py:799 msgid "" -"Find the numeric team ID using the Github API: http://fabian-kostadinov." -"github.io/2015/01/16/how-to-find-a-github-team-id/." +"Find the numeric team ID using the Github API: http://fabian-" +"kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/." msgstr "" "Encuentre su identificador numérico de equipo utilizando la API de GitHub: " "http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/." @@ -3806,15 +3778,15 @@ msgstr "URL callback OAuth2 para Azure AD" #: awx/sso/conf.py:839 msgid "" -"Register an Azure AD application as described by https://msdn.microsoft.com/" -"en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " +"Register an Azure AD application as described by https://msdn.microsoft.com" +"/en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " "secret (Client Secret). Provide this URL as the callback URL for your " "application." msgstr "" -"Registrar una aplicacción AZURE AD como es descrito en https://msdn." -"microsoft.com/en-us/library/azure/dn132599.aspx y obtén una clave OAuth2 (ID " -"de client) y clave secreta (Clave secreta de cliente). Proporcione esta URL " -"como URL callback para su aplicación." +"Registrar una aplicacción AZURE AD como es descrito en " +"https://msdn.microsoft.com/en-us/library/azure/dn132599.aspx y obtén una " +"clave OAuth2 (ID de client) y clave secreta (Clave secreta de cliente). " +"Proporcione esta URL como URL callback para su aplicación." #: awx/sso/conf.py:843 awx/sso/conf.py:854 awx/sso/conf.py:864 #: awx/sso/conf.py:876 awx/sso/conf.py:888 @@ -3858,8 +3830,8 @@ msgid "" "your application." msgstr "" "Registrar Tower como un proveedor de servicio (SP) con cada proveedor de " -"identificación (IdP) que ha configurado. Proporcione su ID de identidad SP y " -"esta dirección URL callback para su aplicación." +"identificación (IdP) que ha configurado. Proporcione su ID de identidad SP y" +" esta dirección URL callback para su aplicación." #: awx/sso/conf.py:911 awx/sso/conf.py:925 awx/sso/conf.py:938 #: awx/sso/conf.py:952 awx/sso/conf.py:966 awx/sso/conf.py:984 @@ -3898,8 +3870,8 @@ msgstr "Certificado público del proveedor de servicio SAML" #: awx/sso/conf.py:950 msgid "" -"Create a keypair for Tower to use as a service provider (SP) and include the " -"certificate content here." +"Create a keypair for Tower to use as a service provider (SP) and include the" +" certificate content here." msgstr "" "Crear par de claves para Tower a usar como proveedor de servicio (SP) e " "incluir el contenido del certificado aquí." @@ -3910,8 +3882,8 @@ msgstr "Clave privada del proveedor de servicio SAML" #: awx/sso/conf.py:964 msgid "" -"Create a keypair for Tower to use as a service provider (SP) and include the " -"private key content here." +"Create a keypair for Tower to use as a service provider (SP) and include the" +" private key content here." msgstr "" "Crear par de claves para Tower a usar como proveedor de servicio (SP) e " "incluir el contenido de la clave privada aquí." @@ -3944,16 +3916,17 @@ msgstr "Proveedores de identidad habilitados SAML" msgid "" "Configure the Entity ID, SSO URL and certificate for each identity provider " "(IdP) in use. Multiple SAML IdPs are supported. Some IdPs may provide user " -"data using attribute names that differ from the default OIDs (https://github." -"com/omab/python-social-auth/blob/master/social/backends/saml.py#L16). " -"Attribute names may be overridden for each IdP." +"data using attribute names that differ from the default OIDs " +"(https://github.com/omab/python-social-" +"auth/blob/master/social/backends/saml.py#L16). Attribute names may be " +"overridden for each IdP." msgstr "" "Configurar el ID de entidad, URL SSO y certificado para cada proveedor de " "identidad (IdP) en uso. Varios IdPs SAML están soportadas. Algunos IdPs " "pueden proporcionar datos de usuario usando nombres de atributos diferentes " -"a los valores por defecto OIDs (https://github.com/omab/python-social-auth/" -"blob/master/social/backends/saml.py#L16). Nombres de atributos pueden ser " -"redefinidos por cada IdP." +"a los valores por defecto OIDs (https://github.com/omab/python-social-" +"auth/blob/master/social/backends/saml.py#L16). Nombres de atributos pueden " +"ser redefinidos por cada IdP." #: awx/sso/conf.py:1077 msgid "SAML Organization Map" @@ -4014,8 +3987,8 @@ msgstr "Indicador de usuario inválido: \"{invalid_flag}\"." #: awx/sso/fields.py:339 awx/sso/fields.py:506 msgid "" -"Expected None, True, False, a string or list of strings but got {input_type} " -"instead." +"Expected None, True, False, a string or list of strings but got {input_type}" +" instead." msgstr "" "Esperado None, True, False, una cadena de texto o una lista de cadenas de " "texto pero en cambio se obtuvo {input_type}" @@ -4116,11 +4089,11 @@ msgstr "Especificar un formato para una petición GET" #: awx/templates/rest_framework/base.html:86 #, python-format msgid "" -"Make a GET request on the %(name)s resource with the format set to `" -"%(format)s`" +"Make a GET request on the %(name)s resource with the format set to " +"`%(format)s`" msgstr "" -"Realizar una petición GET en el recurso %(name)s con el formato establecido " -"a `%(format)s`" +"Realizar una petición GET en el recurso %(name)s con el formato establecido" +" a `%(format)s`" #: awx/templates/rest_framework/base.html:100 #, python-format @@ -4184,8 +4157,8 @@ msgstr "Información personalizada de inicio de sesión" #: awx/ui/conf.py:32 msgid "" "If needed, you can add specific information (such as a legal notice or a " -"disclaimer) to a text box in the login modal using this setting. Any content " -"added must be in plain text, as custom HTML or other markup languages are " +"disclaimer) to a text box in the login modal using this setting. Any content" +" added must be in plain text, as custom HTML or other markup languages are " "not supported. If multiple paragraphs of text are needed, new lines " "(paragraphs) must be escaped as `\\n` within the block of text." msgstr "" @@ -4202,13 +4175,13 @@ msgstr "Logo personalizado" #: awx/ui/conf.py:49 msgid "" -"To set up a custom logo, provide a file that you create. For the custom logo " -"to look its best, use a .png file with a transparent background. GIF, PNG " +"To set up a custom logo, provide a file that you create. For the custom logo" +" to look its best, use a .png file with a transparent background. GIF, PNG " "and JPEG formats are supported." msgstr "" -"Para configurar un logo personalizado, proporcione un fichero que ha creado. " -"Para que los logos personalizados se vean mejor, utilice un fichero .png con " -"fondo transparente. Formatos GIF, PNG y JPEG están soportados." +"Para configurar un logo personalizado, proporcione un fichero que ha creado." +" Para que los logos personalizados se vean mejor, utilice un fichero .png " +"con fondo transparente. Formatos GIF, PNG y JPEG están soportados." #: awx/ui/fields.py:29 msgid "" @@ -4224,8 +4197,9 @@ msgstr "Dato codificado en base64 inválido en la URL de datos" #: awx/ui/templates/ui/index.html:49 msgid "" -"Your session will expire in 60 seconds, would you like to continue?" +"Your session will expire in 60 seconds, would you like to " +"continue?" msgstr "" "Su sesión caducará en 60 segundos, ¿Le gustaría continuar?" @@ -4240,36 +4214,31 @@ msgstr "Establecer cuántos días de datos debería ser retenidos." #: awx/ui/templates/ui/index.html:122 msgid "" -"Please enter an integer that is not " +"Please enter an integer that is not " "negative that is lower than 9999." +"prompt_for_days_form.days_to_keep.$error.max\"> that is lower than " +"9999." msgstr "" -"Por favor introduzca un entero que " -"no sea negativo que sea menor de " +"Por favor introduzca un entero que no sea " +"negativo que sea menor de " "9999." #: awx/ui/templates/ui/index.html:127 msgid "" -"For facts collected older than the time period specified, save one fact scan " -"(snapshot) per time window (frequency). For example, facts older than 30 " -"days are purged, while one weekly fact scan is kept.\n" +"For facts collected older than the time period specified, save one fact scan (snapshot) per time window (frequency). For example, facts older than 30 days are purged, while one weekly fact scan is kept.\n" "
\n" -"
CAUTION: Setting both numerical variables to \"0\" " -"will delete all facts.\n" +"
CAUTION: Setting both numerical variables to \"0\" will delete all facts.\n" "
\n" "
" msgstr "" -"Para facts obtenidos más antiguos que el periodo especificado, guarda un " -"escanéo de facts (instantánea [snapshot]) por una ventana de tiempo " -"(frecuencia). Por ejemplo, facts más antiguos de 30 días son eliminados, " -"mientras que escaneo de facts de una semana son mantenidos.\n" +"Para facts obtenidos más antiguos que el periodo especificado, guarda un escanéo de facts (instantánea [snapshot]) por una ventana de tiempo (frecuencia). Por ejemplo, facts más antiguos de 30 días son eliminados, mientras que escaneo de facts de una semana son mantenidos.\n" "
\n" -"
CUIDADO: Ajustar ambas variables numéricas a \"0\" " -"eliminará todos los facts.\n" +"
CUIDADO: Ajustar ambas variables numéricas a \"0\" eliminará todos los facts.\n" "
\n" "
" @@ -4281,17 +4250,19 @@ msgstr "" #: awx/ui/templates/ui/index.html:150 msgid "" -"Please enter an integer " -"that is not negative " -"that is lower than 9999." +"Please enter an integer that is not " +"negative that is lower than " +"9999." msgstr "" -"Por favor introduzca un entero " -"que no sea negativo " -"que sea menor 9999." +"Por favor introduzca un entero que no sea " +"negativo que sea menor " +"9999." #: awx/ui/templates/ui/index.html:155 msgid "Select a frequency for snapshot retention" @@ -4300,16 +4271,18 @@ msgstr "" #: awx/ui/templates/ui/index.html:169 msgid "" -"Please enter an integer that is not negative that is not" +" negative that is " "lower than 9999." msgstr "" -"Por favor introduzca un entero que no sea negativo que no sea " +"negativo que sea " "menor de 9999." diff --git a/awx/ui/po/es.po b/awx/ui/po/es.po index 4629578866..7c1ca58d49 100644 --- a/awx/ui/po/es.po +++ b/awx/ui/po/es.po @@ -1,33 +1,35 @@ +# Carlos Munoz , 2017. #zanata +# mkim , 2017. #zanata msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: ANSIBLE TOWER UI 0.1\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Alberto Gonzalez \n" +"Project-Id-Version: \n" +"PO-Revision-Date: 2017-04-20 03:23+0000\n" +"Last-Translator: Carlos Munoz \n" "Language-Team: \n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"X-Generator: Poedit 1.6.10\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.1.1\n" -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "%s or %s" msgstr "%s o %s" -#: client/src/controllers/Projects.js:439 -#: client/src/controllers/Projects.js:721 +#: client/src/controllers/Projects.js:441 +#: client/src/controllers/Projects.js:740 msgid "" -"%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 " +"%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." msgstr "" "%sNota%s: Mercurial no soporta autentificación utilizando contraseña. No " -"introduzca el usuario y la clave en la dirección URL. Si utiliza Bitbucket y " -"SSH, no indique su usuario de Bitbucket." +"introduzca el usuario y la clave en la dirección URL. Si utiliza Bitbucket y" +" SSH, no indique su usuario de Bitbucket." #: client/src/controllers/Projects.js:426 -#: client/src/controllers/Projects.js:708 +#: client/src/controllers/Projects.js:725 msgid "" "%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 " @@ -40,14 +42,34 @@ msgstr "" "contraseña cuando se utiliza SSH. El protocolo de sólo lectura GIT (git://) " "no utiliza usuario y contraseña." -#: client/src/forms/Credentials.js:288 +#: client/src/forms/Credentials.js:289 msgid "(defaults to %s)" msgstr "(valor por defecto a %s)" -#: client/src/organizations/list/organizations-list.partial.html:15 +#: client/src/organizations/list/organizations-list.partial.html:20 msgid "+ ADD" msgstr "+ AÑADIR" +#: client/src/partials/subhome.html:30 +#, fuzzy +msgid " Back to options" +msgstr " Regresar a opciones" + +#: client/src/partials/subhome.html:32 +#, fuzzy +msgid " Save" +msgstr " Guardar" + +#: client/src/partials/subhome.html:29 +#, fuzzy +msgid " View Details" +msgstr " Ver Detalles" + +#: client/src/partials/subhome.html:31 +#, fuzzy +msgid " Cancel" +msgstr " Cancelar" + #: client/src/management-jobs/scheduler/schedulerForm.partial.html:33 msgid "A schedule name is required." msgstr "Un nombre para el planificador es necesario." @@ -68,19 +90,26 @@ msgstr "ACERCA DE" msgid "ACTION" msgstr "ACCIÓN" +#: client/src/forms/ActivityDetail.js:25 +#, fuzzy +msgid "ACTIVITY DETAIL" +msgstr "DETALLES DE ACTIVIDAD" + #: client/src/activity-stream/activitystream.route.js:27 +#: client/src/lists/Streams.js:16 client/src/lists/Streams.js:17 msgid "ACTIVITY STREAM" msgstr "FLUJO DE ACTIVIDAD" -#: client/src/forms/Credentials.js:450 client/src/forms/JobTemplates.js:430 -#: client/src/forms/Organizations.js:75 client/src/forms/Projects.js:238 -#: client/src/forms/Teams.js:86 client/src/forms/Workflows.js:128 +#: client/src/forms/Credentials.js:451 client/src/forms/JobTemplates.js:434 +#: client/src/forms/Organizations.js:75 client/src/forms/Projects.js:245 +#: client/src/forms/Teams.js:87 client/src/forms/Workflows.js:129 #: client/src/inventory-scripts/inventory-scripts.list.js:45 #: client/src/lists/Credentials.js:60 client/src/lists/Inventories.js:68 #: client/src/lists/Projects.js:77 client/src/lists/Schedules.js:70 #: client/src/lists/Teams.js:50 client/src/lists/Templates.js:62 #: client/src/lists/Users.js:52 #: client/src/notifications/notificationTemplates.list.js:52 +#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 msgid "ADD" msgstr "AÑADIR" @@ -88,15 +117,15 @@ msgstr "AÑADIR" msgid "ADD NOTIFICATION TEMPLATE" msgstr "AÑADIR UNA PLANTILLA DE NOTIFICACIÓN" -#: client/src/forms/Teams.js:158 client/src/forms/Users.js:215 +#: client/src/forms/Teams.js:159 client/src/forms/Users.js:215 msgid "ADD PERMISSIONS" msgstr "AÑADIR PERMISOS" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 msgid "ADDITIONAL INFORMATION:" msgstr "INFORMACIÓN ADICIONAL:" -#: client/src/organizations/linkout/organizations-linkout.route.js:325 +#: client/src/organizations/linkout/organizations-linkout.route.js:328 msgid "ADMINS" msgstr "ADMINS" @@ -104,11 +133,16 @@ msgstr "ADMINS" msgid "ALL ACTIVITY" msgstr "TODA LA ACTIVIDAD" -#: client/src/forms/Credentials.js:199 +#: client/src/lists/AllJobs.js:16 +#, fuzzy +msgid "ALL JOBS" +msgstr "TODOS LOS TRABAJOS" + +#: client/src/forms/Credentials.js:200 msgid "API Key" msgstr "Clave API" -#: client/src/notifications/notificationTemplates.form.js:251 +#: client/src/notifications/notificationTemplates.form.js:250 msgid "API Service/Integration Key" msgstr "Servicio API/Clave de integración" @@ -120,15 +154,15 @@ msgstr "Token API" msgid "About Tower" msgstr "Sobre Tower" -#: client/src/forms/Credentials.js:92 +#: client/src/forms/Credentials.js:93 msgid "Access Key" msgstr "Clave de acceso" -#: client/src/notifications/notificationTemplates.form.js:229 +#: client/src/notifications/notificationTemplates.form.js:228 msgid "Account SID" msgstr "Cuenta SID" -#: client/src/notifications/notificationTemplates.form.js:187 +#: client/src/notifications/notificationTemplates.form.js:186 msgid "Account Token" msgstr "Cuenta Token" @@ -137,7 +171,7 @@ msgid "Action" msgstr "Acción" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 -#: client/src/shared/list-generator/list-generator.factory.js:547 +#: client/src/shared/list-generator/list-generator.factory.js:543 msgid "Actions" msgstr "Acciones" @@ -146,18 +180,12 @@ msgstr "Acciones" msgid "Activity" msgstr "Actividad" -#: client/src/forms/ActivityDetail.js:25 -msgid "Activity Detail" -msgstr "Detalles de la actividad" - #: client/src/configuration/system-form/configuration-system.controller.js:81 -#: client/src/lists/Streams.js:16 client/src/lists/Streams.js:17 msgid "Activity Stream" msgstr "Flujo de actividad" -#: client/src/forms/Inventories.js:105 client/src/forms/Organizations.js:72 -#: client/src/forms/Teams.js:83 client/src/forms/Workflows.js:125 -#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 +#: client/src/forms/Inventories.js:106 client/src/forms/Organizations.js:72 +#: client/src/forms/Teams.js:84 client/src/forms/Workflows.js:126 msgid "Add" msgstr "Añadir" @@ -177,7 +205,7 @@ msgstr "Añadir inventarios" msgid "Add Notification" msgstr "Añadir notificación" -#: client/src/shared/stateDefinitions.factory.js:277 +#: client/src/shared/stateDefinitions.factory.js:280 msgid "Add Permissions" msgstr "Añadir permisos" @@ -185,8 +213,8 @@ msgstr "Añadir permisos" msgid "Add Project" msgstr "Añadir proyecto" -#: client/src/forms/JobTemplates.js:475 client/src/forms/Workflows.js:173 -#: client/src/shared/form-generator.js:1719 +#: client/src/forms/JobTemplates.js:479 client/src/forms/Workflows.js:174 +#: client/src/shared/form-generator.js:1728 msgid "Add Survey" msgstr "Añadir cuestionario" @@ -194,13 +222,13 @@ msgstr "Añadir cuestionario" msgid "Add Team" msgstr "Añadir equipo" -#: client/src/forms/Teams.js:84 +#: client/src/forms/Teams.js:85 msgid "Add User" msgstr "Añadir usuario" #: client/src/lists/Users.js:19 -#: client/src/shared/stateDefinitions.factory.js:342 -#: client/src/shared/stateDefinitions.factory.js:511 +#: client/src/shared/stateDefinitions.factory.js:345 +#: client/src/shared/stateDefinitions.factory.js:518 msgid "Add Users" msgstr "Añadir usuarios" @@ -212,9 +240,9 @@ msgstr "Añadir usuarios a la organización." msgid "Add a new schedule" msgstr "Añadir un nuevo planificador" -#: client/src/forms/Credentials.js:448 client/src/forms/Inventories.js:107 -#: client/src/forms/JobTemplates.js:428 client/src/forms/Projects.js:236 -#: client/src/forms/Workflows.js:126 +#: client/src/forms/Credentials.js:449 client/src/forms/Inventories.js:108 +#: client/src/forms/JobTemplates.js:432 client/src/forms/Projects.js:243 +#: client/src/forms/Workflows.js:127 msgid "Add a permission" msgstr "Añadir un permiso" @@ -224,10 +252,10 @@ msgid "" "machines, or when syncing inventories or projects." msgstr "" "Añadir contraseñas, claves SSH, etc. para ser utilizadas por Tower al " -"ejecutar un nuevo trabajo sobre máquinas, o cuando se sincroniza inventarios " -"o proyectos." +"ejecutar un nuevo trabajo sobre máquinas, o cuando se sincroniza inventarios" +" o proyectos." -#: client/src/shared/form-generator.js:1462 +#: client/src/shared/form-generator.js:1471 msgid "Admin" msgstr "Administrador" @@ -245,7 +273,6 @@ msgstr "Todo" msgid "All Activity" msgstr "Todas las actividades" -#: client/src/lists/AllJobs.js:16 #: client/src/portal-mode/portal-mode-jobs.partial.html:7 #: client/src/portal-mode/portal-mode-layout.partial.html:12 msgid "All Jobs" @@ -263,7 +290,7 @@ msgstr "Permitir a otros entrar en Tower y poseer el contenido que creen." msgid "Always" msgstr "Siempre" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "" "An SCM update does not appear to be running for project: %s. Click the " "%sRefresh%s button to view the latest status." @@ -272,15 +299,15 @@ msgstr "" "proyectos: %s. Pulse sobre el botón %sActualizar%s para ver el estado más " "reciente." -#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:102 msgid "Are you sure you want to delete the credential below?" msgstr "¿Está seguro que quiere eliminar la credencial indicada?" -#: client/src/helpers/Jobs.js:231 +#: client/src/helpers/Jobs.js:227 msgid "Are you sure you want to delete the job below?" msgstr "¿Está seguro que quiere eliminar el trabajo indicado?" -#: client/src/notifications/notification-templates-list/list.controller.js:184 +#: client/src/notifications/notification-templates-list/list.controller.js:182 msgid "Are you sure you want to delete the notification template below?" msgstr "" "¿Está seguro que quiere eliminar la plantilla de notificación indicada?" @@ -289,7 +316,7 @@ msgstr "" msgid "Are you sure you want to delete the organization below?" msgstr "¿Está seguro que quiere eliminar la organización indicada?" -#: client/src/controllers/Projects.js:204 +#: client/src/controllers/Projects.js:202 msgid "Are you sure you want to delete the project below?" msgstr "¿Está seguro que quiere eliminar el proyecto indicado?" @@ -297,8 +324,13 @@ msgstr "¿Está seguro que quiere eliminar el proyecto indicado?" msgid "Are you sure you want to delete the user below?" msgstr "¿Está seguro que quiere eliminar el usuario indicado?" -#: client/src/controllers/Credentials.js:578 -#: client/src/controllers/Projects.js:689 +#: client/src/partials/survey-maker-modal.html:13 +#, fuzzy +msgid "Are you sure you want to delete this {{deleteMode}}?" +msgstr "¿Esta seguro de que desea eliminar este {{deleteMode}}?" + +#: client/src/controllers/Credentials.js:588 +#: client/src/controllers/Projects.js:704 msgid "Are you sure you want to remove the %s below from %s?" msgstr "¿Esa seguro que quiere eliminar el %s indicado de %s?" @@ -306,12 +338,12 @@ msgstr "¿Esa seguro que quiere eliminar el %s indicado de %s?" msgid "Arguments" msgstr "Argumentos" -#: client/src/forms/Credentials.js:233 client/src/forms/Credentials.js:272 -#: client/src/forms/Credentials.js:312 client/src/forms/Credentials.js:398 +#: client/src/forms/Credentials.js:234 client/src/forms/Credentials.js:273 +#: client/src/forms/Credentials.js:313 client/src/forms/Credentials.js:399 msgid "Ask at runtime?" msgstr "¿Preguntar durante la ejecución?" -#: client/src/shared/form-generator.js:1464 +#: client/src/shared/form-generator.js:1473 msgid "Auditor" msgstr "Auditor" @@ -319,7 +351,7 @@ msgstr "Auditor" msgid "Authentication" msgstr "Identificación" -#: client/src/forms/Credentials.js:73 +#: client/src/forms/Credentials.js:74 msgid "" "Authentication for network device access. This can include SSH keys, " "usernames, passwords, and authorize information. Network credentials are " @@ -330,7 +362,7 @@ msgstr "" "de Red son utilizadas al lanzar trabajos que ejecutan playbooks sobre " "dispositivos de red." -#: client/src/forms/Credentials.js:69 +#: client/src/forms/Credentials.js:70 msgid "" "Authentication for remote machine access. This can include SSH keys, " "usernames, passwords, and sudo information. Machine credentials are used " @@ -341,15 +373,15 @@ msgstr "" "utilizadas al lanzar trabajos que ejecutan playbooks contra servidores " "remotos." -#: client/src/forms/Credentials.js:344 +#: client/src/forms/Credentials.js:345 msgid "Authorize" msgstr "Autorizar" -#: client/src/forms/Credentials.js:352 +#: client/src/forms/Credentials.js:353 msgid "Authorize Password" msgstr "Contraseña de autorización" -#: client/src/configuration/auth-form/configuration-auth.controller.js:101 +#: client/src/configuration/auth-form/configuration-auth.controller.js:103 msgid "Azure AD" msgstr "Azure AD" @@ -357,7 +389,7 @@ msgstr "Azure AD" msgid "BROWSE" msgstr "NAVEGAR" -#: client/src/forms/Projects.js:80 +#: client/src/forms/Projects.js:81 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 " @@ -378,14 +410,35 @@ msgstr "Activar la escalada de privilegios" msgid "Browse" msgstr "Navegar" +#: client/src/partials/survey-maker-modal.html:17 +#: client/src/partials/survey-maker-modal.html:84 +#, fuzzy +msgid "CANCEL" +msgstr "CANCELAR" + #: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:20 msgid "CHANGES" msgstr "MODIFICACIONES" -#: client/src/shared/smart-search/smart-search.partial.html:31 +#: client/src/shared/smart-search/smart-search.partial.html:30 msgid "CLEAR ALL" msgstr "LIMPIAR TODO" +#: client/src/partials/survey-maker-modal.html:85 +#, fuzzy +msgid "CLOSE" +msgstr "CERRAR" + +#: client/src/lists/CompletedJobs.js:18 +#, fuzzy +msgid "COMPLETED JOBS" +msgstr "TRABAJOS COMPLETADOS" + +#: client/src/configuration/configuration.partial.html:10 +#, fuzzy +msgid "CONFIGURE TOWER" +msgstr "CONFIGURAR TORRE" + #: client/src/inventories/manage/copy-move/copy-move.route.js:29 #: client/src/inventories/manage/copy-move/copy-move.route.js:65 msgid "COPY OR MOVE" @@ -395,7 +448,17 @@ msgstr "COPIAR O MOVER" msgid "CREATE %s" msgstr "CREAR %s" -#: client/src/inventories/main.js:117 client/src/scheduler/main.js:190 +#: client/src/forms/Credentials.js:18 +#, fuzzy +msgid "CREATE CREDENTIAL" +msgstr "CREAR CREDENCIAL" + +#: client/src/forms/Hosts.js:18 +#, fuzzy +msgid "CREATE HOST" +msgstr "CREAR HOST" + +#: client/src/inventories/main.js:120 client/src/scheduler/main.js:190 #: client/src/scheduler/main.js:274 client/src/scheduler/main.js:97 msgid "CREATE SCHEDULE" msgstr "CREAR PROGRAMACIÓN" @@ -410,55 +473,57 @@ msgid "CREDENTIAL" msgstr "CREDENCIAL" #: client/src/app.js:320 client/src/helpers/ActivityStream.js:29 +#: client/src/lists/Credentials.js:18 client/src/lists/Credentials.js:19 msgid "CREDENTIALS" msgstr "CREDENCIALES" -#: client/src/forms/Projects.js:194 +#: client/src/forms/Projects.js:201 msgid "Cache Timeout" msgstr "Tiempo de espera para la expiración de la caché" -#: client/src/forms/Projects.js:183 +#: client/src/forms/Projects.js:190 msgid "Cache Timeout%s (seconds)%s" msgstr "Tiempo de espera para la expiración de la caché%s (segundos)%s" -#: client/src/controllers/Projects.js:195 client/src/controllers/Users.js:95 +#: client/src/controllers/Projects.js:193 client/src/controllers/Users.js:95 msgid "Call to %s failed. DELETE returned status:" msgstr "Fallo en la llamada a %s. DELETE ha devuelto el estado:" -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:259 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:257 msgid "Call to %s failed. GET status:" msgstr "Fallo en la llamada a %s. Estado GET:" -#: client/src/controllers/Projects.js:683 +#: client/src/controllers/Projects.js:698 msgid "Call to %s failed. POST returned status:" msgstr "Fallo en la llamada a %s. POST ha devuelto el estado:" -#: client/src/controllers/Projects.js:222 +#: client/src/controllers/Projects.js:220 msgid "Call to %s failed. POST status:" -msgstr "Fallo en la llamada a %s. Estado POST :" +msgstr "Fallo en la llamada a %s. Estado POST :" #: client/src/management-jobs/card/card.controller.js:30 msgid "Call to %s failed. Return status: %d" msgstr "Fallo en la llamada a %s. Ha devuelto el estado: %d" -#: client/src/controllers/Projects.js:268 +#: client/src/controllers/Projects.js:266 msgid "Call to get project failed. GET status:" -msgstr "Fallo en la obtención del proyecto. Estado GET :" +msgstr "Fallo en la obtención del proyecto. Estado GET :" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:105 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:171 -#: client/src/configuration/configuration.controller.js:449 -#: client/src/helpers/Jobs.js:161 client/src/shared/form-generator.js:1707 +#: client/src/configuration/configuration.controller.js:468 +#: client/src/helpers/Jobs.js:157 client/src/shared/form-generator.js:1716 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:12 #: client/src/workflow-results/workflow-results.partial.html:42 msgid "Cancel" msgstr "Cancelar" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Cancel Not Allowed" msgstr "Cancelación no permitida." -#: client/src/lists/Projects.js:122 +#: client/src/lists/Projects.js:123 msgid "Cancel the SCM update" msgstr "Cancelar la actualización de SCM" @@ -466,25 +531,24 @@ msgstr "Cancelar la actualización de SCM" msgid "Cancel the job" msgstr "Cancelar el trabajo." -#: client/src/controllers/Projects.js:84 client/src/helpers/Projects.js:79 +#: client/src/controllers/Projects.js:82 client/src/helpers/Projects.js:79 msgid "Canceled. Click for details" msgstr "Cancelado. Pulse para mostrar más detalles." -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:80 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:81 msgid "Cannot search running job" msgstr "Imposible buscar en trabajos en ejecución." -#: client/src/forms/Projects.js:82 +#: client/src/forms/Projects.js:83 msgid "Change %s under \"Configure Tower\" to change this location." -msgstr "" -"Modificar %s dentro de \"Configurar Tower\" para cambiar esta ubicación." +msgstr "Modificar %s dentro de \"Configurar Tower\" para cambiar esta ubicación." #: client/src/forms/ActivityDetail.js:43 msgid "Changes" msgstr "Modificaciones" -#: client/src/shared/form-generator.js:1083 +#: client/src/shared/form-generator.js:1090 msgid "Choose a %s" msgstr "Escoger un %s" @@ -494,13 +558,13 @@ msgstr "Escoger fichero" #: client/src/license/license.partial.html:97 msgid "" -"Choose your license file, agree to the End User License Agreement, and click " -"submit." +"Choose your license file, agree to the End User License Agreement, and click" +" submit." msgstr "" "Escoja su fichero de licencia, aceptando el Acuerdo de licencia de usuario " "final, y pulse sobre validar." -#: client/src/forms/Projects.js:151 +#: client/src/forms/Projects.js:158 msgid "Clean" msgstr "Limpiar" @@ -522,25 +586,26 @@ msgstr "" #: client/src/lists/Templates.js:19 msgid "" -"Click on a row to select it, and click Finished when done. Use the %s button " -"to create a new job template." +"Click on a row to select it, and click Finished when done. Use the %s button" +" to create a new job template." msgstr "" "Pulse sobre una fila para seleccionarla, y pulse Finalizado una vez " -"terminado. Pulse sobre el botón %s para crear una nueva plantilla de trabajo." +"terminado. Pulse sobre el botón %s para crear una nueva plantilla de " +"trabajo." -#: client/src/forms/Credentials.js:322 +#: client/src/forms/Credentials.js:323 msgid "Client ID" msgstr "ID del cliente" -#: client/src/notifications/notificationTemplates.form.js:262 +#: client/src/notifications/notificationTemplates.form.js:261 msgid "Client Identifier" msgstr "Identificador del cliente" -#: client/src/forms/Credentials.js:331 +#: client/src/forms/Credentials.js:332 msgid "Client Secret" msgstr "Pregunta secreta del cliente" -#: client/src/shared/form-generator.js:1711 +#: client/src/shared/form-generator.js:1720 msgid "Close" msgstr "Cerrar" @@ -553,25 +618,20 @@ msgstr "Credencial cloud" msgid "CloudForms URL" msgstr "URL CloudForms" -#: client/src/job-results/job-results.controller.js:205 -#: client/src/standard-out/standard-out.controller.js:233 -#: client/src/workflow-results/workflow-results.controller.js:136 +#: client/src/job-results/job-results.controller.js:201 +#: client/src/standard-out/standard-out.controller.js:237 +#: client/src/workflow-results/workflow-results.controller.js:139 msgid "Collapse Output" msgstr "Colapsar salida" -#: client/src/notifications/notificationTemplates.form.js:298 +#: client/src/notifications/notificationTemplates.form.js:297 msgid "Color can be one of %s." msgstr "El color puede ser solo uno de estos %s." -#: client/src/lists/CompletedJobs.js:18 -msgid "Completed Jobs" -msgstr "Trabajos terminados" - #: client/src/management-jobs/card/card.partial.html:32 msgid "Configure Notifications" msgstr "Configurar las notificaciones" -#: client/src/configuration/configuration.partial.html:10 #: client/src/setup-menu/setup-menu.partial.html:53 msgid "Configure Tower" msgstr "Configurar Tower" @@ -580,11 +640,11 @@ msgstr "Configurar Tower" msgid "Confirm Password" msgstr "Confirmar la contraseña" -#: client/src/configuration/configuration.controller.js:456 +#: client/src/configuration/configuration.controller.js:475 msgid "Confirm Reset" msgstr "Confirmar la reinicialización" -#: client/src/configuration/configuration.controller.js:465 +#: client/src/configuration/configuration.controller.js:484 msgid "Confirm factory reset" msgstr "Confirmar la reinicialización a valores de fábrica" @@ -593,8 +653,8 @@ msgstr "Confirmar la reinicialización a valores de fábrica" msgid "" "Consult the Ansible documentation for further details on the usage of tags." msgstr "" -"Consultar la documentación de Ansible para información más detallada del uso " -"de etiquetas (tags)." +"Consultar la documentación de Ansible para información más detallada del uso" +" de etiquetas (tags)." #: client/src/forms/JobTemplates.js:245 msgid "" @@ -610,10 +670,6 @@ msgstr "Copiar" msgid "Copy template" msgstr "Copiar plantilla" -#: client/src/forms/Credentials.js:18 -msgid "Create Credential" -msgstr "Crear credencial" - #: client/src/lists/Users.js:46 msgid "Create New" msgstr "Crear nuevo" @@ -635,7 +691,7 @@ msgstr "Crear un nuevo inventario" msgid "Create a new notification template" msgstr "Crear una nueva plantilla de notificación" -#: client/src/organizations/list/organizations-list.partial.html:16 +#: client/src/organizations/list/organizations-list.partial.html:21 msgid "Create a new organization" msgstr "Crear una nueva organización" @@ -682,28 +738,16 @@ msgstr "Credencial" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:123 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:57 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:24 -#: client/src/lists/Credentials.js:18 client/src/lists/Credentials.js:19 #: client/src/setup-menu/setup-menu.partial.html:22 msgid "Credentials" msgstr "Credenciales" -#: client/src/controllers/Credentials.js:348 -msgid "" -"Credentials are only shared within an organization. Assign credentials to an " -"organization to delegate credential permissions. The organization cannot be " -"edited after credentials are assigned." -msgstr "" -"Las credenciales son solo compartidas a nivel de organización. Asignar " -"credenciales a una organización para delegar permisos de credencial. La " -"organización no puede ser editar después de que las credenciales son " -"asignadas." - #: client/src/shared/directives.js:135 msgid "Current Image:" msgstr "Script personalizado" #: client/src/inventory-scripts/inventory-scripts.form.js:53 -#: client/src/inventory-scripts/inventory-scripts.form.js:63 +#: client/src/inventory-scripts/inventory-scripts.form.js:64 msgid "Custom Script" msgstr "El logo personalizado ha sido subido." @@ -711,29 +755,35 @@ msgstr "El logo personalizado ha sido subido." msgid "DASHBOARD" msgstr "PANEL DE CONTROL" -#: client/src/controllers/Credentials.js:106 -#: client/src/controllers/Credentials.js:580 -#: client/src/controllers/Projects.js:691 client/src/controllers/Users.js:104 -#: client/src/notifications/notification-templates-list/list.controller.js:189 +#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:590 +#: client/src/controllers/Projects.js:706 client/src/controllers/Users.js:104 +#: client/src/notifications/notification-templates-list/list.controller.js:187 #: client/src/organizations/list/organizations-list.controller.js:168 +#: client/src/partials/survey-maker-modal.html:18 msgid "DELETE" msgstr "ELIMINAR" +#: client/src/partials/survey-maker-modal.html:83 +#, fuzzy +msgid "DELETE SURVEY" +msgstr "BORRAR CUESTIONARIO" + #: client/src/job-detail/job-detail.partial.html:176 #: client/src/job-detail/job-detail.partial.html:179 msgid "DETAILS" msgstr "DETALLES" -#: client/src/controllers/Credentials.js:103 -#: client/src/controllers/Credentials.js:577 -#: client/src/controllers/Projects.js:203 -#: client/src/controllers/Projects.js:688 client/src/controllers/Users.js:101 -#: client/src/helpers/Jobs.js:165 +#: client/src/controllers/Credentials.js:101 +#: client/src/controllers/Credentials.js:587 +#: client/src/controllers/Projects.js:201 +#: client/src/controllers/Projects.js:703 client/src/controllers/Users.js:101 +#: client/src/helpers/Jobs.js:161 #: client/src/inventory-scripts/inventory-scripts.list.js:74 #: client/src/lists/Credentials.js:91 client/src/lists/Inventories.js:92 #: client/src/lists/Schedules.js:92 client/src/lists/Teams.js:77 #: client/src/lists/Templates.js:124 client/src/lists/Users.js:81 -#: client/src/notifications/notification-templates-list/list.controller.js:186 +#: client/src/notifications/notification-templates-list/list.controller.js:184 #: client/src/notifications/notificationTemplates.list.js:89 #: client/src/organizations/list/organizations-list.controller.js:165 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:13 @@ -757,7 +807,7 @@ msgstr "Eliminar el script de inventario." msgid "Delete notification" msgstr "Eliminar la notificación" -#: client/src/forms/Projects.js:161 +#: client/src/forms/Projects.js:168 msgid "Delete on Update" msgstr "Eliminar la actualización" @@ -777,18 +827,18 @@ msgstr "Eliminar la plantilla" msgid "Delete the job" msgstr "Eliminar el trabajo" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "" "Delete the local repository in its entirety prior to performing an update." msgstr "" "Eliminar el repositorio local en su totalidad antes de realizar la " "actualización." -#: client/src/lists/Projects.js:116 +#: client/src/lists/Projects.js:117 msgid "Delete the project" msgstr "Eliminar el proyecto" -#: client/src/lists/ScheduledJobs.js:82 +#: client/src/lists/ScheduledJobs.js:83 msgid "Delete the schedule" msgstr "Eliminar la planificación" @@ -796,7 +846,7 @@ msgstr "Eliminar la planificación" msgid "Delete user" msgstr "Eliminar el usuario" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "" "Depending on the size of the repository this may significantly increase the " "amount of time required to complete an update." @@ -804,11 +854,12 @@ msgstr "" "Dependiendo del tamaño del repositorio esto podría incrementar " "significativamente el tiempo necesario para completar una actualización." -#: client/src/forms/Credentials.js:41 client/src/forms/Inventories.js:37 -#: client/src/forms/JobTemplates.js:42 client/src/forms/Organizations.js:33 -#: client/src/forms/Projects.js:38 client/src/forms/Teams.js:34 -#: client/src/forms/Users.js:144 client/src/forms/Users.js:170 -#: client/src/forms/Workflows.js:41 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:52 +#: client/src/forms/Credentials.js:41 client/src/forms/Hosts.js:61 +#: client/src/forms/Inventories.js:37 client/src/forms/JobTemplates.js:42 +#: client/src/forms/Organizations.js:33 client/src/forms/Projects.js:38 +#: client/src/forms/Teams.js:34 client/src/forms/Users.js:144 +#: client/src/forms/Users.js:170 client/src/forms/Workflows.js:41 #: client/src/inventory-scripts/inventory-scripts.form.js:35 #: client/src/inventory-scripts/inventory-scripts.list.js:25 #: client/src/lists/Credentials.js:34 @@ -818,36 +869,36 @@ msgstr "" msgid "Description" msgstr "Descripción" -#: client/src/notifications/notificationTemplates.form.js:141 -#: client/src/notifications/notificationTemplates.form.js:146 -#: client/src/notifications/notificationTemplates.form.js:158 -#: client/src/notifications/notificationTemplates.form.js:163 -#: client/src/notifications/notificationTemplates.form.js:376 +#: client/src/notifications/notificationTemplates.form.js:140 +#: client/src/notifications/notificationTemplates.form.js:145 +#: client/src/notifications/notificationTemplates.form.js:157 +#: client/src/notifications/notificationTemplates.form.js:162 +#: client/src/notifications/notificationTemplates.form.js:375 msgid "Destination Channels" msgstr "Canales destinatarios" -#: client/src/notifications/notificationTemplates.form.js:371 +#: client/src/notifications/notificationTemplates.form.js:370 msgid "Destination Channels or Users" msgstr "Canales destinatarios o usuarios" -#: client/src/notifications/notificationTemplates.form.js:212 -#: client/src/notifications/notificationTemplates.form.js:217 +#: client/src/notifications/notificationTemplates.form.js:211 +#: client/src/notifications/notificationTemplates.form.js:216 msgid "Destination SMS Number" msgstr "Número SMS del destinatario" #: client/src/license/license.partial.html:5 -#: client/src/shared/form-generator.js:1493 +#: client/src/shared/form-generator.js:1502 msgid "Details" msgstr "Detalles" -#: client/src/configuration/auth-form/configuration-auth.controller.js:70 +#: client/src/configuration/auth-form/configuration-auth.controller.js:72 #: client/src/configuration/configuration.controller.js:181 #: client/src/configuration/configuration.controller.js:243 #: client/src/configuration/system-form/configuration-system.controller.js:49 msgid "Discard changes" msgstr "Descartar cambios" -#: client/src/forms/Teams.js:147 +#: client/src/forms/Teams.js:148 msgid "Dissasociate permission from team" msgstr "Desasociar permiso de un equipo." @@ -855,20 +906,20 @@ msgstr "Desasociar permiso de un equipo." msgid "Dissasociate permission from user" msgstr "Desasociar permiso de un usuario" -#: client/src/forms/Credentials.js:385 client/src/helpers/Credentials.js:134 +#: client/src/forms/Credentials.js:386 client/src/helpers/Credentials.js:134 #: client/src/helpers/Credentials.js:270 msgid "Domain Name" msgstr "Nombre de dominio" #: client/src/job-detail/job-detail.partial.html:420 #: client/src/job-results/job-results.controller.js:8 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:114 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:134 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:137 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:102 msgid "Download Output" msgstr "Descargar salida" -#: client/src/inventory-scripts/inventory-scripts.form.js:61 +#: client/src/inventory-scripts/inventory-scripts.form.js:62 msgid "" "Drag and drop your custom inventory script file here or create one in the " "field to import your custom inventory." @@ -876,6 +927,16 @@ msgstr "" "Arrastrar y soltar sus ficheros scripts personalizados de inventario aquí o " "crear uno en el campo para importar su inventario personalizado." +#: client/src/partials/survey-maker-modal.html:76 +#, fuzzy +msgid "Drop question here to reorder" +msgstr "Arrastre y suelte una pregunta aquí para reordenar" + +#: client/src/configuration/configuration.route.js:30 +#, fuzzy +msgid "EDIT CONFIGURATION" +msgstr "EDITAR CONFIGURACION" + #: client/src/management-jobs/scheduler/main.js:95 msgid "EDIT SCHEDULED JOB" msgstr "MODIFICAR UN TRABAJO PLANIFICADO" @@ -891,11 +952,11 @@ msgstr "TIEMPO TRANSCURRIDO" msgid "EVENT SUMMARY" msgstr "RESUMEN DEL EVENTO" -#: client/src/shared/smart-search/smart-search.partial.html:40 +#: client/src/shared/smart-search/smart-search.partial.html:39 msgid "EXAMPLES:" msgstr "EJEMPLOS:" -#: client/src/forms/Projects.js:174 +#: client/src/forms/Projects.js:181 msgid "" "Each time a job runs using this project, perform an update to the local " "repository prior to starting the job." @@ -903,7 +964,7 @@ msgstr "" "Cada vez que un trabajo se ejecuta usando este proyecto, se realizará una " "actualización al repositorio local antes de iniciar el trabajo." -#: client/src/dashboard/hosts/dashboard-hosts.list.js:62 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:63 #: client/src/inventory-scripts/inventory-scripts.list.js:57 #: client/src/lists/Credentials.js:72 client/src/lists/Inventories.js:78 #: client/src/lists/Schedules.js:77 client/src/lists/Teams.js:60 @@ -913,12 +974,8 @@ msgstr "" msgid "Edit" msgstr "Editar" -#: client/src/configuration/configuration.route.js:30 -msgid "Edit Configuration" -msgstr "Editar la configuración" - -#: client/src/forms/JobTemplates.js:482 client/src/forms/Workflows.js:180 -#: client/src/shared/form-generator.js:1723 +#: client/src/forms/JobTemplates.js:486 client/src/forms/Workflows.js:181 +#: client/src/shared/form-generator.js:1732 msgid "Edit Survey" msgstr "Editar el cuestionario" @@ -930,7 +987,7 @@ msgstr "Editar la configuración de Tower." msgid "Edit credential" msgstr "Editar credenciales" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:66 msgid "Edit host" msgstr "Editar el servidor" @@ -962,11 +1019,11 @@ msgstr "Editar la plantilla" msgid "Edit the User" msgstr "Editar el usuario" -#: client/src/lists/Projects.js:103 +#: client/src/lists/Projects.js:104 msgid "Edit the project" msgstr "Editar el proyecto" -#: client/src/lists/ScheduledJobs.js:68 +#: client/src/lists/ScheduledJobs.js:69 msgid "Edit the schedule" msgstr "Editar la planificación" @@ -974,13 +1031,13 @@ msgstr "Editar la planificación" msgid "Edit user" msgstr "Editar el usuario" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "" -"Either you do not have access or the SCM update process completed. Click the " -"%sRefresh%s button to view the latest status." +"Either you do not have access or the SCM update process completed. Click the" +" %sRefresh%s button to view the latest status." msgstr "" "Usted no tiene acceso o el proceso de actualización de SCM ha sido " -"completado. Pulse sobre el botón %Actualizar% para ver el estado más " +"completado. Pulse sobre el botón %sActualizar%s para ver el estado más " "reciente." #: client/src/forms/EventsViewer.js:81 client/src/forms/LogViewerStatus.js:50 @@ -990,7 +1047,7 @@ msgstr "" msgid "Elapsed" msgstr "Tiempo transcurrido" -#: client/src/forms/Credentials.js:192 client/src/forms/Users.js:42 +#: client/src/forms/Credentials.js:193 client/src/forms/Users.js:53 msgid "Email" msgstr "Correo" @@ -1023,7 +1080,8 @@ msgstr "Fin" msgid "End User License Agreement" msgstr "Acuerdo de licencia de usuario final" -#: client/src/forms/Inventories.js:60 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:64 +#: client/src/forms/Hosts.js:71 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." @@ -1044,8 +1102,8 @@ msgid "" "Enter the URL which corresponds to your %sRed Hat Satellite 6 server. %sFor " "example, %s" msgstr "" -"Introduzca la URL que corresponda a su servidor %sRed Hat Satellite 6. %sPor " -"ejemplo, %s" +"Introduzca la URL que corresponda a su servidor %sRed Hat Satellite 6. %sPor" +" ejemplo, %s" #: client/src/helpers/Credentials.js:129 client/src/helpers/Credentials.js:265 msgid "" @@ -1054,25 +1112,25 @@ msgstr "" "Introduzca el nombre de servidor o dirección IP que corresponda a su VMWare " "vCenter." -#: client/src/configuration/configuration.controller.js:307 -#: client/src/configuration/configuration.controller.js:385 -#: client/src/configuration/configuration.controller.js:419 -#: client/src/configuration/configuration.controller.js:438 -#: client/src/controllers/Projects.js:173 -#: client/src/controllers/Projects.js:194 -#: client/src/controllers/Projects.js:222 -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:258 -#: client/src/controllers/Projects.js:267 -#: client/src/controllers/Projects.js:405 -#: client/src/controllers/Projects.js:599 -#: client/src/controllers/Projects.js:665 -#: client/src/controllers/Projects.js:683 client/src/controllers/Users.js:182 +#: client/src/configuration/configuration.controller.js:318 +#: client/src/configuration/configuration.controller.js:403 +#: client/src/configuration/configuration.controller.js:437 +#: client/src/configuration/configuration.controller.js:457 +#: client/src/controllers/Projects.js:171 +#: client/src/controllers/Projects.js:192 +#: client/src/controllers/Projects.js:220 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:256 +#: client/src/controllers/Projects.js:265 +#: client/src/controllers/Projects.js:403 +#: client/src/controllers/Projects.js:614 +#: client/src/controllers/Projects.js:680 +#: client/src/controllers/Projects.js:698 client/src/controllers/Users.js:182 #: client/src/controllers/Users.js:271 client/src/controllers/Users.js:339 #: client/src/controllers/Users.js:94 client/src/helpers/Credentials.js:418 #: client/src/helpers/Credentials.js:434 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:168 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:187 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:172 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:191 #: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:119 #: client/src/management-jobs/card/card.controller.js:150 #: client/src/management-jobs/card/card.controller.js:240 @@ -1089,7 +1147,7 @@ msgstr "¡Error!" msgid "Event" msgstr "Evento" -#: client/src/widgets/Stream.js:216 +#: client/src/widgets/Stream.js:222 msgid "Event summary not available" msgstr "Resumen del evento no disponible." @@ -1098,25 +1156,25 @@ msgid "Events" msgstr "Eventos" #: client/src/controllers/Projects.js:423 -#: client/src/controllers/Projects.js:706 +#: client/src/controllers/Projects.js:723 msgid "Example URLs for GIT SCM include:" -msgstr "Ejemplos de URLs para SCM GIT :" +msgstr "Ejemplos de URLs para SCM GIT :" -#: client/src/controllers/Projects.js:436 -#: client/src/controllers/Projects.js:718 +#: client/src/controllers/Projects.js:438 +#: client/src/controllers/Projects.js:737 msgid "Example URLs for Mercurial SCM include:" -msgstr "Ejemplos de URLs para SCM Mercurial :" +msgstr "Ejemplos de URLs para SCM Mercurial :" -#: client/src/controllers/Projects.js:431 -#: client/src/controllers/Projects.js:713 +#: client/src/controllers/Projects.js:432 +#: client/src/controllers/Projects.js:731 msgid "Example URLs for Subversion SCM include:" -msgstr "Ejemplos de URLs para SCM Subversion :" +msgstr "Ejemplos de URLs para SCM Subversion :" #: client/src/job-results/job-results.controller.js:11 -#: client/src/job-results/job-results.controller.js:207 -#: client/src/standard-out/standard-out.controller.js:235 +#: client/src/job-results/job-results.controller.js:203 +#: client/src/standard-out/standard-out.controller.js:239 #: client/src/standard-out/standard-out.controller.js:25 -#: client/src/workflow-results/workflow-results.controller.js:138 +#: client/src/workflow-results/workflow-results.controller.js:141 #: client/src/workflow-results/workflow-results.controller.js:97 msgid "Expand Output" msgstr "Extender salida" @@ -1129,18 +1187,31 @@ msgstr "Fecha de expiración el" msgid "Explanation" msgstr "Explicación" -#: client/src/forms/JobTemplates.js:367 client/src/forms/JobTemplates.js:379 -#: client/src/forms/Workflows.js:72 client/src/forms/Workflows.js:84 +#: client/src/forms/JobTemplates.js:371 client/src/forms/JobTemplates.js:383 +#: client/src/forms/Workflows.js:73 client/src/forms/Workflows.js:85 +#: client/src/inventories/manage/adhoc/adhoc.form.js:125 +#: client/src/inventories/manage/adhoc/adhoc.form.js:137 #: client/src/job-detail/job-detail.partial.html:163 #: client/src/partials/logviewer.html:8 msgid "Extra Variables" msgstr "Variables adicionales" +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:104 +#, fuzzy +msgid "" +"Extra Variables\n" +" \n" +" " +msgstr "" +"Variables Adicionales\n" +" \n" +" " + #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:67 msgid "FAILED" msgstr "FALLIDO" -#: client/src/shared/smart-search/smart-search.partial.html:48 +#: client/src/shared/smart-search/smart-search.partial.html:45 msgid "FIELDS:" msgstr "CAMPOS:" @@ -1167,9 +1238,9 @@ msgstr "Ha fallado la creación de nuevo usuario. POST ha devuelto el estado:" #: client/src/helpers/Credentials.js:419 msgid "Failed to create new Credential. POST status:" -msgstr "Ha fallado la creación de un nuevo Credencial. Estado POST :" +msgstr "Ha fallado la creación de un nuevo Credencial. Estado POST :" -#: client/src/controllers/Projects.js:406 +#: client/src/controllers/Projects.js:404 msgid "Failed to create new project. POST returned status:" msgstr "" "Ha fallado la creación de un nuevo proyecto. POST ha devuelto el estado:" @@ -1180,36 +1251,36 @@ msgstr "" "Ha fallado la obtención de tipos de autenticación de terceros. Estado " "devuelto:" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:188 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:192 msgid "Failed to retrieve job template extra variables." msgstr "" "Ha fallado la obtención de variables adicionales para la plantilla de tarea." -#: client/src/controllers/Projects.js:600 +#: client/src/controllers/Projects.js:615 msgid "Failed to retrieve project: %s. GET status:" -msgstr "Ha fallado la obtención del proyecto: %s. Estado GET :" +msgstr "Ha fallado la obtención del proyecto: %s. Estado GET :" #: client/src/controllers/Users.js:272 client/src/controllers/Users.js:340 msgid "Failed to retrieve user: %s. GET status:" -msgstr "Ha fallado la obtención del usuario: %s. Estado GET :" +msgstr "Ha fallado la obtención del usuario: %s. Estado GET :" -#: client/src/configuration/configuration.controller.js:386 +#: client/src/configuration/configuration.controller.js:404 msgid "Failed to save settings. Returned status:" msgstr "Ha fallado guardar los ajustes. Estado devuelto:" -#: client/src/configuration/configuration.controller.js:420 +#: client/src/configuration/configuration.controller.js:438 msgid "Failed to save toggle settings. Returned status:" msgstr "Ha fallado el guardado de los ajustes cambiados. Estado devuelto:" #: client/src/helpers/Credentials.js:435 msgid "Failed to update Credential. PUT status:" -msgstr "Ha fallado la actualización de Credencial. Estado PUT :" +msgstr "Ha fallado la actualización de Credencial. Estado PUT :" -#: client/src/controllers/Projects.js:665 +#: client/src/controllers/Projects.js:680 msgid "Failed to update project: %s. PUT status:" -msgstr "Ha fallado la actualización del proyecto: %s. Estado PUT :" +msgstr "Ha fallado la actualización del proyecto: %s. Estado PUT :" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:169 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:173 #: client/src/management-jobs/card/card.controller.js:151 #: client/src/management-jobs/card/card.controller.js:241 msgid "Failed updating job %s with variables. POST returned: %d" @@ -1245,28 +1316,36 @@ msgstr "Nombre" msgid "First Run" msgstr "Primera ejecución" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 +#, fuzzy msgid "" "For additional information on advanced search search syntax please see the " -"Ansible Tower documentation." +"Ansible Tower " +"documentation." msgstr "" "Para obtener información adicional sobre la sintaxis de búsqueda avanzada, " -"por favor lea la documentación de Ansible Tower." +"por favor lea la documentación de Ansible Tower " +"documentación." #: client/src/helpers/Credentials.js:143 client/src/helpers/Credentials.js:279 msgid "For example, %s" msgstr "Por ejemplo, %s" #: client/src/notifications/notificationTemplates.form.js:101 -#: client/src/notifications/notificationTemplates.form.js:145 -#: client/src/notifications/notificationTemplates.form.js:162 -#: client/src/notifications/notificationTemplates.form.js:216 -#: client/src/notifications/notificationTemplates.form.js:337 -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:144 +#: client/src/notifications/notificationTemplates.form.js:161 +#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "For example:" msgstr "Por ejemplo:" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:25 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:34 msgid "" "For hosts that are part of an external inventory, this flag cannot be " "changed. It will be set by the inventory sync process." @@ -1277,11 +1356,11 @@ msgstr "" #: client/src/forms/JobTemplates.js:227 client/src/forms/WorkflowMaker.js:125 msgid "" -"For more information and examples see %sthe Patterns topic at docs.ansible." -"com%s." +"For more information and examples see %sthe Patterns topic at " +"docs.ansible.com%s." msgstr "" -"Para más información y ejemplos, observe el tema llamado %sPatterns en docs." -"ansible.com%s." +"Para más información y ejemplos, observe el tema llamado %sPatterns en " +"docs.ansible.com%s." #: client/src/forms/JobTemplates.js:203 client/src/forms/JobTemplates.js:216 #: client/src/job-detail/job-detail.partial.html:138 @@ -1297,23 +1376,23 @@ msgstr "Información sobre la frecuencia" msgid "GROUP" msgstr "GRUPO" -#: client/src/configuration/auth-form/configuration-auth.controller.js:102 +#: client/src/configuration/auth-form/configuration-auth.controller.js:104 msgid "GitHub" msgstr "GitHub" -#: client/src/configuration/auth-form/configuration-auth.controller.js:103 +#: client/src/configuration/auth-form/configuration-auth.controller.js:105 msgid "GitHub Org" msgstr "GitHub Org" -#: client/src/configuration/auth-form/configuration-auth.controller.js:104 +#: client/src/configuration/auth-form/configuration-auth.controller.js:106 msgid "GitHub Team" msgstr "Equipo GitHub" -#: client/src/configuration/auth-form/configuration-auth.controller.js:105 +#: client/src/configuration/auth-form/configuration-auth.controller.js:107 msgid "Google OAuth2" msgstr "Google OAuth2" -#: client/src/forms/Teams.js:156 client/src/forms/Users.js:213 +#: client/src/forms/Teams.js:157 client/src/forms/Users.js:213 msgid "Grant Permission" msgstr "Conceder permiso" @@ -1325,12 +1404,14 @@ msgstr "" "Agrupar todo su contenido para administrar permisos a través de los " "diferentes departamentos en su compañía." +#: client/src/dashboard/hosts/dashboard-hosts.list.js:13 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:14 #: client/src/dashboard/hosts/main.js:55 #: client/src/helpers/ActivityStream.js:53 msgid "HOSTS" msgstr "SERVIDORES" -#: client/src/notifications/notificationTemplates.form.js:327 +#: client/src/notifications/notificationTemplates.form.js:326 msgid "HTTP Headers" msgstr "Cabeceras HTTP" @@ -1338,9 +1419,9 @@ msgstr "Cabeceras HTTP" msgid "Hide Activity Stream" msgstr "Ocultar flujo de actividad" -#: client/src/forms/Credentials.js:140 client/src/forms/EventsViewer.js:20 +#: client/src/forms/Credentials.js:141 client/src/forms/EventsViewer.js:20 #: client/src/lists/JobEvents.js:73 -#: client/src/notifications/notificationTemplates.form.js:75 +#: client/src/notifications/notificationTemplates.form.js:86 msgid "Host" msgstr "Servidor" @@ -1352,10 +1433,19 @@ msgstr "Servidor (URL de autenticación)" msgid "Host Config Key" msgstr "Clave de configuración del servidor" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:29 #: client/src/dashboard/hosts/dashboard-hosts.list.js:54 +#: client/src/forms/Hosts.js:38 msgid "Host Enabled" msgstr "Servidor habilitado" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:35 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:47 +#: client/src/forms/Hosts.js:44 client/src/forms/Hosts.js:55 +#, fuzzy +msgid "Host Name" +msgstr "Nombre de Host" + #: client/src/job-detail/job-detail.partial.html:269 msgid "Host Status" msgstr "Estado del servidor" @@ -1364,6 +1454,12 @@ msgstr "Estado del servidor" msgid "Host Summary" msgstr "Resumen del servidor" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:60 +#: client/src/forms/Hosts.js:78 +#, fuzzy +msgid "Host Variables" +msgstr "Variables de Host" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:25 #: client/src/dashboard/counts/dashboard-counts.directive.js:39 #: client/src/job-detail/job-detail.partial.html:349 @@ -1394,7 +1490,9 @@ msgstr "ID" msgid "INITIATED BY" msgstr "INICIALIZADO POR" -#: client/src/helpers/ActivityStream.js:26 client/src/inventories/main.js:298 +#: client/src/helpers/ActivityStream.js:26 client/src/inventories/main.js:301 +#: client/src/inventories/main.js:51 client/src/lists/Inventories.js:16 +#: client/src/lists/Inventories.js:17 #: client/src/main-menu/main-menu.partial.html:104 #: client/src/main-menu/main-menu.partial.html:27 #: client/src/organizations/linkout/organizations-linkout.route.js:143 @@ -1406,15 +1504,16 @@ msgid "INVENTORY SCRIPT" msgstr "SCRIPT DE INVENTARIO" #: client/src/helpers/ActivityStream.js:47 +#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/inventory-scripts/main.js:66 msgid "INVENTORY SCRIPTS" msgstr "SCRIPTS DE INVENTARIO" -#: client/src/notifications/notificationTemplates.form.js:360 +#: client/src/notifications/notificationTemplates.form.js:359 msgid "IRC Nick" msgstr "Alias en IRC" -#: client/src/notifications/notificationTemplates.form.js:349 +#: client/src/notifications/notificationTemplates.form.js:348 msgid "IRC Server Address" msgstr "Dirección del servidor IRC" @@ -1431,7 +1530,10 @@ msgid "" "ITEMS \n" " {{dataRange}}\n" " of {{dataCount()}}" -msgstr "ELEMENTO " +msgstr "" +"ITEMS \n" +" {{dataRange}}\n" +" of {{dataCount()}}" #: client/src/login/authenticationServices/timer.factory.js:157 msgid "Idle Session" @@ -1439,8 +1541,8 @@ msgstr "Sesión inactiva" #: client/src/forms/JobTemplates.js:295 msgid "" -"If enabled, run this playbook as an administrator. This is the equivalent of " -"passing the %s option to the %s command." +"If enabled, run this playbook as an administrator. This is the equivalent of" +" passing the %s option to the %s command." msgstr "" "Si se habilita esta opción, ejecuta este playbook como administrador. Esto " "es equivalente a pasar la opción %s al comando %s." @@ -1461,17 +1563,19 @@ msgstr "" "Si no se especifica ninguna organización, el credencial puede ser sólo " "utilizado por el usuario que ha creado dicho credencial. Administradores de " "organización y administradores de sistema pueden asignar una organización " -"para que los roles puedan permitir que los credenciales puedan ser asignados " -"a usuarios y equipos en esa organización" +"para que los roles puedan permitir que los credenciales puedan ser asignados" +" a usuarios y equipos en esa organización" #: client/src/license/license.partial.html:70 msgid "" "If you are ready to upgrade, please contact us by clicking the button below" msgstr "" -"Si usted está listo para la actualización, por favor contáctenos pulsando el " -"siguiente botón" +"Si usted está listo para la actualización, por favor contáctenos pulsando el" +" siguiente botón" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:23 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:32 msgid "" "Indicates if a host is available and should be included in running jobs." msgstr "" @@ -1487,15 +1591,15 @@ msgid "" "Instead, %s will check playbook syntax, test environment setup and report " "problems." msgstr "" -"En vez, %s comprobará el playbook, la sintaxis, configuración del entorno de " -"pruebas e informará de problemas." +"En vez, %s comprobará el playbook, la sintaxis, configuración del entorno de" +" pruebas e informará de problemas." #: client/src/license/license.partial.html:11 msgid "Invalid License" msgstr "Licencia no valida" -#: client/src/license/license.controller.js:69 -#: client/src/license/license.controller.js:76 +#: client/src/license/license.controller.js:70 +#: client/src/license/license.controller.js:77 msgid "Invalid file format. Please upload valid JSON." msgstr "Formato de fichero inválido. Por favor cargue un JSON válido." @@ -1507,7 +1611,6 @@ msgstr "Nombre de usuario o contraseña inválido. Por favor intente de nuevo." #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:51 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:26 #: client/src/dashboard/counts/dashboard-counts.directive.js:50 -#: client/src/lists/Inventories.js:16 client/src/lists/Inventories.js:17 msgid "Inventories" msgstr "Inventarios" @@ -1520,7 +1623,6 @@ msgid "Inventory" msgstr "Inventario" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:27 -#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/setup-menu/setup-menu.partial.html:34 msgid "Inventory Scripts" msgstr "Scripts de inventario" @@ -1533,7 +1635,7 @@ msgstr "Sincronización de inventario" msgid "Inventory Sync Failures" msgstr "Errores de sincronización de inventario" -#: client/src/forms/Inventories.js:67 +#: client/src/forms/Inventories.js:68 msgid "Inventory Variables" msgstr "Variables de inventario" @@ -1542,6 +1644,11 @@ msgstr "Variables de inventario" msgid "Item" msgstr "Elemento" +#: client/src/lists/JobEvents.js:15 +#, fuzzy +msgid "JOB EVENTS" +msgstr "EVENTOS DE TRABAJO" + #: client/src/dashboard/graphs/dashboard-graphs.partial.html:4 msgid "JOB STATUS" msgstr "ESTADO DEL TRABAJO" @@ -1550,21 +1657,20 @@ msgstr "ESTADO DEL TRABAJO" msgid "JOB TEMPLATE" msgstr "PLANTILLA DE TRABAJO" -#: client/src/organizations/linkout/organizations-linkout.route.js:252 +#: client/src/lists/PortalJobTemplates.js:15 +#: client/src/lists/PortalJobTemplates.js:16 +#: client/src/organizations/linkout/organizations-linkout.route.js:254 msgid "JOB TEMPLATES" msgstr "PLANTILLAS DE TRABAJO" #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:113 #: client/src/helpers/ActivityStream.js:44 client/src/jobs/jobs.route.js:15 +#: client/src/lists/PortalJobs.js:15 client/src/lists/PortalJobs.js:19 #: client/src/main-menu/main-menu.partial.html:122 #: client/src/main-menu/main-menu.partial.html:43 msgid "JOBS" msgstr "TRABAJOS" -#: client/src/lists/JobEvents.js:15 -msgid "Job Events" -msgstr "Eventos de trabajo" - #: client/src/forms/JobTemplates.js:252 client/src/forms/JobTemplates.js:260 #: client/src/forms/WorkflowMaker.js:134 client/src/forms/WorkflowMaker.js:142 #: client/src/job-detail/job-detail.partial.html:153 @@ -1577,9 +1683,7 @@ msgstr "Plantilla de trabajo" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:35 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:97 -#: client/src/lists/PortalJobTemplates.js:15 -#: client/src/lists/PortalJobTemplates.js:16 -#: client/src/organizations/linkout/organizations-linkout.route.js:264 +#: client/src/organizations/linkout/organizations-linkout.route.js:266 msgid "Job Templates" msgstr "Plantillas de trabajo" @@ -1592,11 +1696,11 @@ msgstr "Tipo de trabajo" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:28 #: client/src/configuration/configuration.partial.html:16 -#: client/src/jobs/jobs.partial.html:7 client/src/lists/PortalJobs.js:15 -#: client/src/lists/PortalJobs.js:19 +#: client/src/jobs/jobs.partial.html:7 msgid "Jobs" msgstr "Trabajos" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:63 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:90 #: client/src/shared/smart-search/smart-search.partial.html:14 msgid "Key" @@ -1607,7 +1711,7 @@ msgstr "Clave" msgid "LAUNCH TYPE" msgstr "TIPO DE EJECUCIÓN" -#: client/src/configuration/auth-form/configuration-auth.controller.js:106 +#: client/src/configuration/auth-form/configuration-auth.controller.js:108 msgid "LDAP" msgstr "LDAP" @@ -1623,12 +1727,8 @@ msgstr "ERROR DE LICENCIA" msgid "LOG OUT" msgstr "DESCONECTARSE" -#: client/src/notifications/notificationTemplates.form.js:273 -msgid "Label to be shown with notification" -msgstr "Etiqueta a ser mostrada con la notificación" - -#: client/src/forms/JobTemplates.js:355 client/src/forms/JobTemplates.js:360 -#: client/src/forms/Workflows.js:60 client/src/forms/Workflows.js:65 +#: client/src/forms/JobTemplates.js:359 client/src/forms/JobTemplates.js:364 +#: client/src/forms/Workflows.js:61 client/src/forms/Workflows.js:66 #: client/src/lists/AllJobs.js:76 client/src/lists/Templates.js:47 msgid "Labels" msgstr "Etiquetas" @@ -1643,7 +1743,7 @@ msgid "Last Updated" msgstr "Última actualización" #: client/src/lists/PortalJobTemplates.js:39 client/src/lists/Templates.js:84 -#: client/src/shared/form-generator.js:1715 +#: client/src/shared/form-generator.js:1724 msgid "Launch" msgstr "Ejecutar" @@ -1711,7 +1811,7 @@ msgstr "Eventos en directo: error conectando al servidor Tower." #: client/src/job-detail/job-detail.partial.html:316 #: client/src/job-detail/job-detail.partial.html:371 -#: client/src/shared/form-generator.js:1991 +#: client/src/shared/form-generator.js:2002 msgid "Loading..." msgstr "Cargando..." @@ -1727,6 +1827,7 @@ msgstr "Desconectarse" msgid "Logging" msgstr "Iniciando sesión" +#: client/src/management-jobs/card/card.partial.html:4 #: client/src/management-jobs/card/card.route.js:21 msgid "MANAGEMENT JOBS" msgstr "TAREAS DE GESTIÓN" @@ -1735,7 +1836,7 @@ msgstr "TAREAS DE GESTIÓN" msgid "MY VIEW" msgstr "MI VISTA" -#: client/src/forms/Credentials.js:68 +#: client/src/forms/Credentials.js:69 msgid "Machine" msgstr "Máquina" @@ -1757,17 +1858,16 @@ msgstr "" msgid "Management Certificate" msgstr "Certificado de gestión" -#: client/src/management-jobs/card/card.partial.html:4 #: client/src/setup-menu/setup-menu.partial.html:28 msgid "Management Jobs" msgstr "Trabajos de gestión" -#: client/src/controllers/Projects.js:93 +#: client/src/controllers/Projects.js:91 msgid "Manual projects do not require a schedule" msgstr "Los proyectos manuales no necesitan de una planificación." -#: client/src/controllers/Projects.js:589 -#: client/src/controllers/Projects.js:92 +#: client/src/controllers/Projects.js:599 +#: client/src/controllers/Projects.js:90 msgid "Manual projects do not require an SCM update" msgstr "Los proyectos manuales no necesitan una actualización del SCM" @@ -1811,6 +1911,51 @@ msgstr "Mi vista" msgid "NAME" msgstr "NOMBRE" +#: client/src/inventory-scripts/inventory-scripts.form.js:16 +#, fuzzy +msgid "NEW CUSTOM INVENTORY" +msgstr "NUEVO INVENTARIO PERSONALIZADO" + +#: client/src/forms/Inventories.js:18 +#, fuzzy +msgid "NEW INVENTORY" +msgstr "NUEVO INVENTARIO" + +#: client/src/forms/JobTemplates.js:20 +#, fuzzy +msgid "NEW JOB TEMPLATE" +msgstr "NEVA PLANTILLA DE TRABAJO" + +#: client/src/notifications/notificationTemplates.form.js:16 +#, fuzzy +msgid "NEW NOTIFICATION TEMPLATE" +msgstr "NUEVA PLANTILLA DE NOTIFICACION" + +#: client/src/forms/Organizations.js:18 +#, fuzzy +msgid "NEW ORGANIZATION" +msgstr "NUEVA ORGANIZACION" + +#: client/src/forms/Projects.js:18 +#, fuzzy +msgid "NEW PROJECT" +msgstr "NUEVO PROYECTO" + +#: client/src/forms/Teams.js:18 +#, fuzzy +msgid "NEW TEAM" +msgstr "NUEVO EQUIPO" + +#: client/src/forms/Users.js:18 +#, fuzzy +msgid "NEW USER" +msgstr "NUEVO USUARIO" + +#: client/src/forms/Workflows.js:19 +#, fuzzy +msgid "NEW WORKFLOW JOB TEMPLATE" +msgstr "NUEVA PLANTILLA DE FLUJO DE TRABAJO" + #: client/src/dashboard/hosts/dashboard-hosts.list.js:18 msgid "NO HOSTS FOUND" msgstr "NINGÚN SERVIDOR ENCONTRADO" @@ -1824,6 +1969,7 @@ msgid "NOTIFICATION TEMPLATE" msgstr "PLANTILLA DE NOTIFICACIÓN" #: client/src/helpers/ActivityStream.js:38 +#: client/src/notifications/notificationTemplates.list.js:14 msgid "NOTIFICATION TEMPLATES" msgstr "PLANTILLAS DE NOTIFICACIÓN" @@ -1832,12 +1978,13 @@ msgstr "PLANTILLAS DE NOTIFICACIÓN" msgid "NOTIFICATIONS" msgstr "NOTIFICACIONES" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:36 #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:14 #: client/src/dashboard/lists/jobs/jobs-list.partial.html:13 #: client/src/forms/Credentials.js:34 client/src/forms/Inventories.js:29 #: client/src/forms/JobTemplates.js:35 client/src/forms/LogViewerStatus.js:23 #: client/src/forms/Organizations.js:26 client/src/forms/Projects.js:31 -#: client/src/forms/Teams.js:125 client/src/forms/Teams.js:27 +#: client/src/forms/Teams.js:126 client/src/forms/Teams.js:27 #: client/src/forms/Users.js:141 client/src/forms/Users.js:167 #: client/src/forms/Users.js:193 client/src/forms/Workflows.js:34 #: client/src/inventory-scripts/inventory-scripts.form.js:28 @@ -1856,7 +2003,7 @@ msgstr "NOTIFICACIONES" msgid "Name" msgstr "Nombre" -#: client/src/forms/Credentials.js:72 +#: client/src/forms/Credentials.js:73 msgid "Network" msgstr "Red" @@ -1867,53 +2014,17 @@ msgstr "Credenciales de Red" #: client/src/forms/JobTemplates.js:196 msgid "" -"Network credentials are used by Ansible networking modules to connect to and " -"manage networking devices." +"Network credentials are used by Ansible networking modules to connect to and" +" manage networking devices." msgstr "" "Las credenciales de Red son utilizadas por los módulos de red de Ansible " "para conectar y administrar dispositivos de red." -#: client/src/inventory-scripts/inventory-scripts.form.js:16 -msgid "New Custom Inventory" -msgstr "Nuevo nombre del inventario personalizado" - -#: client/src/forms/Inventories.js:18 -msgid "New Inventory" -msgstr "Nuevo inventario" - -#: client/src/forms/JobTemplates.js:20 -msgid "New Job Template" -msgstr "Nueva plantilla de trabajo" - -#: client/src/notifications/notificationTemplates.form.js:16 -msgid "New Notification Template" -msgstr "Nueva plantilla de notificación" - -#: client/src/forms/Organizations.js:18 -msgid "New Organization" -msgstr "Nueva organización" - -#: client/src/forms/Projects.js:18 -msgid "New Project" -msgstr "Nuevo proyecto" - -#: client/src/forms/Teams.js:18 -msgid "New Team" -msgstr "Nuevo equipo" - -#: client/src/forms/Users.js:18 -msgid "New User" -msgstr "Nuevo usuario" - -#: client/src/forms/Workflows.js:19 -msgid "New Workflow Job Template" -msgstr "Nueva plantilla de flujo de trabajo" - #: client/src/controllers/Users.js:174 msgid "New user successfully created!" msgstr "¡Nuevo usuario creado correctamente!" -#: client/src/lists/ScheduledJobs.js:52 client/src/lists/Schedules.js:45 +#: client/src/lists/ScheduledJobs.js:53 client/src/lists/Schedules.js:45 msgid "Next Run" msgstr "Siguiente ejecución" @@ -1921,7 +2032,7 @@ msgstr "Siguiente ejecución" msgid "No Credentials Have Been Created" msgstr "Ningún credencial ha sido creado" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "No SCM Configuration" msgstr "Ninguna configuración SCM" @@ -1933,7 +2044,7 @@ msgstr "Ninguna actualización SCM ha sido ejecutada para este proyecto" msgid "No Teams exist" msgstr "No existe ningún equipo" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "No Updates Available" msgstr "No existen actualizaciones disponibles" @@ -1973,15 +2084,15 @@ msgstr "Ningún servidor encontrado." msgid "No matching tasks" msgstr "Ninguna tarea encontrada" -#: client/src/forms/Teams.js:122 client/src/forms/Users.js:190 +#: client/src/forms/Teams.js:123 client/src/forms/Users.js:190 msgid "No permissions have been granted" msgstr "Ningún permiso concedido" -#: client/src/notifications/notification-templates-list/list.controller.js:88 +#: client/src/notifications/notification-templates-list/list.controller.js:86 msgid "No recent notifications." msgstr "No hay notificaciones recientes" -#: client/src/shared/form-generator.js:1885 +#: client/src/shared/form-generator.js:1896 msgid "No records matched your search." msgstr "No existe registros que coincidan con su búsqueda." @@ -1993,20 +2104,24 @@ msgstr "No existen planificaciones" msgid "Normal User" msgstr "Usuario normal" -#: client/src/controllers/Projects.js:95 +#: client/src/controllers/Projects.js:93 msgid "Not configured for SCM" msgstr "No configurado para SCM" -#: client/src/notifications/notificationTemplates.form.js:296 +#: client/src/notifications/notificationTemplates.form.js:295 msgid "Notification Color" msgstr "Color de notificación" -#: client/src/notifications/notification-templates-list/list.controller.js:115 +#: client/src/notifications/notification-templates-list/list.controller.js:113 msgid "Notification Failed." msgstr "Notificación fallida" +#: client/src/notifications/notificationTemplates.form.js:284 +#, fuzzy +msgid "Notification Label" +msgstr "Etiqueta de Notificación" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:29 -#: client/src/notifications/notificationTemplates.list.js:14 msgid "Notification Templates" msgstr "Plantillas de notificación" @@ -2016,19 +2131,23 @@ msgstr "Plantillas de notificación" msgid "Notifications" msgstr "Notificación" -#: client/src/notifications/notificationTemplates.form.js:309 +#: client/src/notifications/notificationTemplates.form.js:308 msgid "Notify Channel" msgstr "Notificar canal" -#: client/src/notifications/notificationTemplates.form.js:201 +#: client/src/notifications/notificationTemplates.form.js:200 msgid "Number associated with the \"Messaging Service\" in Twilio." msgstr "Número asociado con el \"Servicio de mensaje\" en Twilio.T" -#: client/src/shared/form-generator.js:552 +#: client/src/partials/survey-maker-modal.html:27 +#: client/src/shared/form-generator.js:553 +#: client/src/shared/generator-helpers.js:525 msgid "OFF" msgstr "OFF" -#: client/src/shared/form-generator.js:550 +#: client/src/partials/survey-maker-modal.html:26 +#: client/src/shared/form-generator.js:551 +#: client/src/shared/generator-helpers.js:521 msgid "ON" msgstr "ON" @@ -2054,7 +2173,7 @@ msgstr "En caso de error" msgid "On Success" msgstr "En caso de éxito" -#: client/src/forms/Credentials.js:380 +#: client/src/forms/Credentials.js:381 msgid "" "OpenStack domains define administrative boundaries. It is only needed for " "Keystone v3 authentication URLs. Common scenarios include:" @@ -2063,18 +2182,18 @@ msgstr "" "necesario para las direcciones URLs en el uso de autentificación para " "KeyStone v3. Los escenarios más habituales:" -#: client/src/forms/JobTemplates.js:362 client/src/forms/Workflows.js:67 +#: client/src/forms/JobTemplates.js:366 client/src/forms/Workflows.js:68 msgid "" "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 "" -"Etiquetas opcionales que describen esta plantilla de trabajo, como puede ser " -"'dev' o 'test'. Las etiquetas pueden ser utilizadas para agrupar o filtrar " +"Etiquetas opcionales que describen esta plantilla de trabajo, como puede ser" +" 'dev' o 'test'. Las etiquetas pueden ser utilizadas para agrupar o filtrar " "plantillas de trabajo y trabajos completados en la vista en Tower." #: client/src/forms/JobTemplates.js:288 -#: client/src/notifications/notificationTemplates.form.js:395 +#: client/src/notifications/notificationTemplates.form.js:394 #: client/src/partials/logviewer.html:7 msgid "Options" msgstr "Opciones" @@ -2082,7 +2201,7 @@ msgstr "Opciones" #: client/src/forms/Credentials.js:48 client/src/forms/Credentials.js:55 #: client/src/forms/Inventories.js:42 client/src/forms/Projects.js:43 #: client/src/forms/Projects.js:49 client/src/forms/Teams.js:39 -#: client/src/forms/Users.js:59 client/src/forms/Workflows.js:47 +#: client/src/forms/Users.js:42 client/src/forms/Workflows.js:47 #: client/src/forms/Workflows.js:53 #: client/src/inventory-scripts/inventory-scripts.form.js:40 #: client/src/inventory-scripts/inventory-scripts.list.js:30 @@ -2097,7 +2216,7 @@ msgstr "Organización" msgid "Organizations" msgstr "Organizaciones" -#: client/src/forms/Credentials.js:80 +#: client/src/forms/Credentials.js:81 msgid "Others (Cloud Providers)" msgstr "Otros (Proveedores Cloud)" @@ -2109,9 +2228,14 @@ msgstr "Propietarios" msgid "PASSWORD" msgstr "CONTRASEÑA" -#: client/src/organizations/list/organizations-list.partial.html:45 -#: client/src/shared/form-generator.js:1891 -#: client/src/shared/list-generator/list-generator.factory.js:246 +#: client/src/partials/survey-maker-modal.html:45 +#, fuzzy +msgid "PLEASE ADD A SURVEY PROMPT ON THE LEFT." +msgstr "POR FAVOR AGREGUE UN AVISO DE CUESTIONARIO A LA IZQUIERDA." + +#: client/src/organizations/list/organizations-list.partial.html:48 +#: client/src/shared/form-generator.js:1902 +#: client/src/shared/list-generator/list-generator.factory.js:242 msgid "PLEASE ADD ITEMS TO THIS LIST" msgstr "Por favor añada elementos a la lista" @@ -2119,11 +2243,17 @@ msgstr "Por favor añada elementos a la lista" msgid "PORTAL MODE" msgstr "MODO PORTAL" +#: client/src/partials/survey-maker-modal.html:43 +#, fuzzy +msgid "PREVIEW" +msgstr "VISTA PREVIA" + #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:73 msgid "PROJECT" msgstr "PROYECTO" #: client/src/app.js:296 client/src/helpers/ActivityStream.js:23 +#: client/src/lists/Projects.js:16 client/src/lists/Projects.js:17 #: client/src/main-menu/main-menu.partial.html:19 #: client/src/main-menu/main-menu.partial.html:95 #: client/src/organizations/linkout/organizations-linkout.route.js:194 @@ -2135,23 +2265,36 @@ msgid "" "Page\n" " {{current}} of\n" " {{last}}" -msgstr "Págin" +msgstr "" +"Page\n" +" {{current}} de\n" +" {{last}}" -#: client/src/notifications/notificationTemplates.form.js:240 +#: client/src/notifications/notificationTemplates.form.js:239 msgid "Pagerduty subdomain" msgstr "Subdominio Pagerduty" -#: client/src/forms/JobTemplates.js:373 client/src/forms/Workflows.js:78 +#: client/src/forms/JobTemplates.js:377 client/src/forms/Workflows.js:79 msgid "" "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." msgstr "" "Transmitir variables adicionales en la línea de comandos a los playbook. " -"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja " -"de clave/valor utilizando la sintaxis YAML o JSON." +"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja" +" de clave/valor utilizando la sintaxis YAML o JSON." -#: client/src/forms/Credentials.js:227 client/src/forms/Users.js:70 +#: client/src/inventories/manage/adhoc/adhoc.form.js:131 +#, fuzzy +msgid "" +"Pass extra command line variables. This is the %s or %s command line " +"parameter for %s. Provide key/value pairs using either YAML or JSON." +msgstr "" +"Transmitir variables adicionales en la línea de comandos a los playbook. " +"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja" +" de clave/valor utilizando la sintaxis YAML o JSON." + +#: client/src/forms/Credentials.js:228 client/src/forms/Users.js:70 #: client/src/helpers/Credentials.js:120 client/src/helpers/Credentials.js:128 #: client/src/helpers/Credentials.js:148 client/src/helpers/Credentials.js:158 #: client/src/helpers/Credentials.js:168 client/src/helpers/Credentials.js:231 @@ -2182,7 +2325,8 @@ msgstr "Semana pasada" #: client/src/helpers/Credentials.js:103 client/src/helpers/Credentials.js:239 msgid "" -"Paste the contents of the PEM file associated with the service account email." +"Paste the contents of the PEM file associated with the service account " +"email." msgstr "" "Pegue el contenido del fichero PEM asociado al correo de la cuenta de " "servicio." @@ -2208,15 +2352,15 @@ msgstr "" msgid "Period" msgstr "Periodo" -#: client/src/controllers/Projects.js:326 client/src/controllers/Users.js:141 +#: client/src/controllers/Projects.js:323 client/src/controllers/Users.js:141 #: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 msgid "Permission Error" msgstr "Error de permiso" -#: client/src/forms/Credentials.js:440 client/src/forms/Inventories.js:96 -#: client/src/forms/JobTemplates.js:419 client/src/forms/Projects.js:228 -#: client/src/forms/Teams.js:118 client/src/forms/Users.js:186 -#: client/src/forms/Workflows.js:117 +#: client/src/forms/Credentials.js:441 client/src/forms/Inventories.js:97 +#: client/src/forms/JobTemplates.js:423 client/src/forms/Projects.js:235 +#: client/src/forms/Teams.js:119 client/src/forms/Users.js:186 +#: client/src/forms/Workflows.js:118 msgid "Permissions" msgstr "Permisos" @@ -2229,7 +2373,7 @@ msgstr "Jugada" msgid "Playbook" msgstr "Playbook" -#: client/src/forms/Projects.js:89 +#: client/src/forms/Projects.js:90 msgid "Playbook Directory" msgstr "Directorio de playbook" @@ -2261,8 +2405,8 @@ msgstr "" "Por favor pulse sobre el siguiente botón para visitar la página web de " "Ansible para obtener una clave de licencia Tower." -#: client/src/shared/form-generator.js:836 -#: client/src/shared/form-generator.js:950 +#: client/src/shared/form-generator.js:842 +#: client/src/shared/form-generator.js:956 msgid "" "Please enter a URL that begins with ssh, http or https. The URL may not " "contain the '@' character." @@ -2270,15 +2414,21 @@ msgstr "" "Por favor introduzca una URL que inicie por ssh, http o https. La URL no " "puede contener el caracter '@'." -#: client/src/shared/form-generator.js:1188 +#: client/src/partials/inventory-add.html:11 +#, fuzzy +msgid "Please enter a name for this job template copy." +msgstr "" +"Por favor introduzca un nombre para esta copia de platilla de trabajo." + +#: client/src/shared/form-generator.js:1195 msgid "Please enter a number greater than %d and less than %d." msgstr "Por favor introduzca un número mayor que %d y menor que %d." -#: client/src/shared/form-generator.js:1190 +#: client/src/shared/form-generator.js:1197 msgid "Please enter a number greater than %d." msgstr "Por favor introduzca un número mayor que %d." -#: client/src/shared/form-generator.js:1182 +#: client/src/shared/form-generator.js:1189 msgid "Please enter a number." msgstr "Por favor introduzca un número." @@ -2290,14 +2440,14 @@ msgstr "Por favor introduzca una contraseña." msgid "Please enter a username." msgstr "Por favor introduzca un usuario." -#: client/src/shared/form-generator.js:826 -#: client/src/shared/form-generator.js:940 +#: client/src/shared/form-generator.js:832 +#: client/src/shared/form-generator.js:946 msgid "Please enter a valid email address." msgstr "Por favor introduzca una dirección de correo válida." -#: client/src/shared/form-generator.js:1042 -#: client/src/shared/form-generator.js:821 -#: client/src/shared/form-generator.js:935 +#: client/src/shared/form-generator.js:1049 +#: client/src/shared/form-generator.js:827 +#: client/src/shared/form-generator.js:941 msgid "Please enter a value." msgstr "Por favor introduzca un valor." @@ -2309,14 +2459,14 @@ msgstr "Por favor guarde y ejecute un trabajo para ver" msgid "Please save before adding notifications" msgstr "Por favor guarde antes de añadir notificaciones" -#: client/src/forms/Organizations.js:59 client/src/forms/Teams.js:70 +#: client/src/forms/Organizations.js:59 client/src/forms/Teams.js:71 msgid "Please save before adding users" msgstr "Por favor guarde antes de añadir usuarios" -#: client/src/controllers/Credentials.js:160 -#: client/src/forms/Inventories.js:92 client/src/forms/JobTemplates.js:412 -#: client/src/forms/Projects.js:220 client/src/forms/Teams.js:114 -#: client/src/forms/Workflows.js:110 +#: client/src/controllers/Credentials.js:159 +#: client/src/forms/Inventories.js:93 client/src/forms/JobTemplates.js:416 +#: client/src/forms/Projects.js:227 client/src/forms/Teams.js:115 +#: client/src/forms/Workflows.js:111 msgid "Please save before assigning permissions" msgstr "Por favor guarde antes de asignar permisos" @@ -2328,7 +2478,7 @@ msgstr "Por favor guarde antes de asignar a organizaciones" msgid "Please save before assigning to teams" msgstr "Por favor guarde antes de asignar a equipos" -#: client/src/forms/Workflows.js:186 +#: client/src/forms/Workflows.js:187 msgid "Please save before defining the workflow graph" msgstr "Por favor guarde antes de definir un gráfico de flujo de trabajo" @@ -2351,11 +2501,11 @@ msgstr "" "Por favor seleccione un credencial de Máquina o seleccione la opción " "Preguntar al ejecutar." -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "Please select a number between" msgstr "Por favor seleccione un número entre" -#: client/src/shared/form-generator.js:1219 +#: client/src/shared/form-generator.js:1226 msgid "Please select a number." msgstr "Por favor seleccione un número." @@ -2365,10 +2515,10 @@ msgstr "" "Por favor selecciona una tarea de las siguientes para ver sus servidores " "asociados" -#: client/src/shared/form-generator.js:1110 -#: client/src/shared/form-generator.js:1179 -#: client/src/shared/form-generator.js:1299 -#: client/src/shared/form-generator.js:1406 +#: client/src/shared/form-generator.js:1117 +#: client/src/shared/form-generator.js:1186 +#: client/src/shared/form-generator.js:1306 +#: client/src/shared/form-generator.js:1415 msgid "Please select a value." msgstr "Por favor seleccione un valor." @@ -2382,7 +2532,7 @@ msgstr "" msgid "Please select an Inventory." msgstr "Por favor seleccione un Inventario." -#: client/src/shared/form-generator.js:1216 +#: client/src/shared/form-generator.js:1223 msgid "Please select at least one value." msgstr "Por favor seleccione al menos un valor." @@ -2390,20 +2540,29 @@ msgstr "Por favor seleccione al menos un valor." msgid "Please select resources from the lists below." msgstr "Por favor seleccione recursos de la lista siguiente." +#: client/src/controllers/Credentials.js:347 +#, fuzzy +msgid "" +"Populate the organization field in the form below in order to set " +"permissions." +msgstr "" +"Popule el campo de organización en la forma siguiente para establecer " +"permisos." + #: client/src/notifications/shared/type-change.service.js:27 msgid "Port" msgstr "Puerto" -#: client/src/forms/Credentials.js:258 client/src/helpers/Credentials.js:36 +#: client/src/forms/Credentials.js:259 client/src/helpers/Credentials.js:36 #: client/src/helpers/Credentials.js:60 msgid "Private Key" msgstr "Clave privada" -#: client/src/forms/Credentials.js:265 +#: client/src/forms/Credentials.js:266 msgid "Private Key Passphrase" msgstr "Frase de contraseña para la clave privada" -#: client/src/forms/Credentials.js:280 client/src/forms/Credentials.js:284 +#: client/src/forms/Credentials.js:281 client/src/forms/Credentials.js:285 msgid "Privilege Escalation" msgstr "Elevación de privilegios" @@ -2425,15 +2584,15 @@ msgstr "Proyecto" msgid "Project (Tenant Name)" msgstr "Proyecto (Nombre del inquilino [Tenant])" -#: client/src/forms/Projects.js:75 client/src/forms/Projects.js:83 +#: client/src/forms/Projects.js:76 client/src/forms/Projects.js:84 msgid "Project Base Path" msgstr "Ruta base del proyecto" -#: client/src/forms/Credentials.js:366 +#: client/src/forms/Credentials.js:367 msgid "Project Name" msgstr "Nombre del proyecto" -#: client/src/forms/Projects.js:100 +#: client/src/forms/Projects.js:101 msgid "Project Path" msgstr "Ruta del proyecto" @@ -2441,7 +2600,7 @@ msgstr "Ruta del proyecto" msgid "Project Sync Failures" msgstr "Errores de sincronización del proyecto" -#: client/src/controllers/Projects.js:174 +#: client/src/controllers/Projects.js:172 msgid "Project lookup failed. GET returned:" msgstr "La búsqueda del proyecto ha fallado. GET ha devuelto:" @@ -2449,22 +2608,33 @@ msgstr "La búsqueda del proyecto ha fallado. GET ha devuelto:" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:46 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:31 #: client/src/dashboard/counts/dashboard-counts.directive.js:61 -#: client/src/lists/Projects.js:16 client/src/lists/Projects.js:17 msgid "Projects" msgstr "Proyectos" #: client/src/forms/JobTemplates.js:162 client/src/forms/JobTemplates.js:234 #: client/src/forms/JobTemplates.js:265 client/src/forms/JobTemplates.js:283 -#: client/src/forms/JobTemplates.js:384 client/src/forms/JobTemplates.js:68 +#: client/src/forms/JobTemplates.js:388 client/src/forms/JobTemplates.js:68 #: client/src/forms/JobTemplates.js:94 msgid "Prompt on launch" msgstr "Preguntar al ejecutar" +#: client/src/partials/subhome.html:6 +#, fuzzy +msgid "Properties" +msgstr "Propiedades" + #: client/src/forms/JobTemplates.js:257 client/src/forms/JobTemplates.js:275 #: client/src/forms/WorkflowMaker.js:139 client/src/forms/WorkflowMaker.js:154 msgid "Provide a comma separated list of tags." msgstr "Introduzca una lista de etiquetas separadas por coma." +#: client/src/dashboard/hosts/dashboard-hosts.form.js:40 +#: client/src/forms/Hosts.js:48 +#, fuzzy +msgid "Provide a host name, ip address, or ip address:port. Examples include:" +msgstr "" +"Provea un nombre de host, dirección ip, ó dirección:puerto. Por ejemplo:" + #: client/src/forms/JobTemplates.js:225 client/src/forms/WorkflowMaker.js:123 msgid "" "Provide a host pattern to further constrain the list of hosts that will be " @@ -2483,7 +2653,7 @@ msgstr "Dirección URL para las llamadas callback" msgid "Queued. Click for details" msgstr "En cola. Pulse para más información" -#: client/src/configuration/auth-form/configuration-auth.controller.js:107 +#: client/src/configuration/auth-form/configuration-auth.controller.js:109 msgid "RADIUS" msgstr "RADIUS" @@ -2514,7 +2684,7 @@ msgstr "ACTUALIZAR" msgid "REGIONS" msgstr "REGIONES" -#: client/src/shared/smart-search/smart-search.partial.html:51 +#: client/src/shared/smart-search/smart-search.partial.html:48 msgid "RELATED FIELDS:" msgstr "CAMPOS RELACIONADOS:" @@ -2570,11 +2740,11 @@ msgid "Relaunch using the same parameters" msgstr "Relanzar utilizando los mismos parámetros" #: client/src/access/add-rbac-user-team/rbac-selected-list.directive.js:37 -#: client/src/forms/Teams.js:143 client/src/forms/Users.js:221 +#: client/src/forms/Teams.js:144 client/src/forms/Users.js:221 msgid "Remove" msgstr "Eliminar" -#: client/src/forms/Projects.js:153 +#: client/src/forms/Projects.js:160 msgid "Remove any local modifications prior to performing an update." msgstr "" "Eliminar cualquier modificación local antes de realizar una actualización." @@ -2587,10 +2757,6 @@ msgstr "Frecuencia de repetición" msgid "Request License" msgstr "Solicitar una licencia" -#: client/src/shared/form-generator.js:681 -msgid "Reset" -msgstr "Reinicializar" - #: client/src/forms/EventsViewer.js:62 client/src/forms/EventsViewer.js:66 #: client/src/forms/EventsViewer.js:69 client/src/forms/EventsViewer.js:70 msgid "Results" @@ -2604,6 +2770,11 @@ msgstr "Resultados Traceback" msgid "Return Code" msgstr "Código devuelto" +#: client/src/shared/form-generator.js:682 +#, fuzzy +msgid "Revert" +msgstr "Revertir" + #: client/src/configuration/auth-form/sub-forms/auth-azure.form.js:46 #: client/src/configuration/auth-form/sub-forms/auth-github-org.form.js:50 #: client/src/configuration/auth-form/sub-forms/auth-github-team.form.js:50 @@ -2611,10 +2782,10 @@ msgstr "Código devuelto" #: client/src/configuration/auth-form/sub-forms/auth-google-oauth2.form.js:58 #: client/src/configuration/auth-form/sub-forms/auth-ldap.form.js:88 #: client/src/configuration/auth-form/sub-forms/auth-radius.form.js:33 -#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:82 +#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:86 #: client/src/configuration/jobs-form/configuration-jobs.form.js:63 #: client/src/configuration/system-form/sub-forms/system-activity-stream.form.js:25 -#: client/src/configuration/system-form/sub-forms/system-logging.form.js:52 +#: client/src/configuration/system-form/sub-forms/system-logging.form.js:51 #: client/src/configuration/system-form/sub-forms/system-misc.form.js:29 #: client/src/configuration/ui-form/configuration-ui.form.js:35 msgid "Revert all to default" @@ -2624,15 +2795,15 @@ msgstr "Revertir todo a valores por defecto" msgid "Revision" msgstr "Revisión" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "Revision #" msgstr "Revisión n°" -#: client/src/forms/Credentials.js:462 client/src/forms/EventsViewer.js:36 -#: client/src/forms/Inventories.js:121 client/src/forms/Organizations.js:88 -#: client/src/forms/Projects.js:250 client/src/forms/Teams.js:136 -#: client/src/forms/Teams.js:99 client/src/forms/Users.js:204 -#: client/src/forms/Workflows.js:141 +#: client/src/forms/Credentials.js:463 client/src/forms/EventsViewer.js:36 +#: client/src/forms/Inventories.js:122 client/src/forms/Organizations.js:88 +#: client/src/forms/Projects.js:257 client/src/forms/Teams.js:100 +#: client/src/forms/Teams.js:137 client/src/forms/Users.js:204 +#: client/src/forms/Workflows.js:142 msgid "Role" msgstr "Rol" @@ -2640,34 +2811,43 @@ msgstr "Rol" msgid "Running! Click for details" msgstr "¡En ejecución!. Pulse para más detalles" -#: client/src/configuration/auth-form/configuration-auth.controller.js:108 +#: client/src/configuration/auth-form/configuration-auth.controller.js:110 msgid "SAML" msgstr "SAML" +#: client/src/partials/survey-maker-modal.html:86 +#, fuzzy +msgid "SAVE" +msgstr "GUARDAR" + #: client/src/scheduler/main.js:314 msgid "SCHEDULED" msgstr "PROGRAMADO" -#: client/src/helpers/ActivityStream.js:50 client/src/inventories/main.js:59 +#: client/src/lists/ScheduledJobs.js:15 +#, fuzzy +msgid "SCHEDULED JOBS" +msgstr "TRABAJOS PROGRAMADOS" + +#: client/src/helpers/ActivityStream.js:50 client/src/inventories/main.js:103 +#: client/src/inventories/main.js:62 #: client/src/management-jobs/scheduler/main.js:26 -#: client/src/scheduler/main.js:129 client/src/scheduler/main.js:219 -#: client/src/scheduler/main.js:36 +#: client/src/management-jobs/scheduler/main.js:32 +#: client/src/scheduler/main.js:129 client/src/scheduler/main.js:167 +#: client/src/scheduler/main.js:219 client/src/scheduler/main.js:257 +#: client/src/scheduler/main.js:36 client/src/scheduler/main.js:74 msgid "SCHEDULES" msgstr "PROGRAMACIONES" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "SCM Branch" msgstr "Rama SCM" -#: client/src/forms/Projects.js:154 +#: client/src/forms/Projects.js:161 msgid "SCM Clean" msgstr "Limpiar SCM" -#: client/src/forms/Projects.js:130 -msgid "SCM Credential" -msgstr "Credencial SCM" - -#: client/src/forms/Projects.js:165 +#: client/src/forms/Projects.js:172 msgid "SCM Delete" msgstr "Eliminar SCM" @@ -2675,25 +2855,25 @@ msgstr "Eliminar SCM" msgid "SCM Private Key" msgstr "Clave privada SCM" -#: client/src/forms/Projects.js:56 +#: client/src/forms/Projects.js:57 msgid "SCM Type" msgstr "Tipo SCM" #: client/src/dashboard/graphs/dashboard-graphs.partial.html:49 -#: client/src/forms/Projects.js:175 +#: client/src/forms/Projects.js:182 msgid "SCM Update" msgstr "Actualizar SCM" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "SCM Update Cancel" msgstr "Cancelar actualización SCM" -#: client/src/forms/Projects.js:145 +#: client/src/forms/Projects.js:152 msgid "SCM Update Options" msgstr "Opciones de actualización SCM" -#: client/src/controllers/Projects.js:585 -#: client/src/controllers/Projects.js:88 +#: client/src/controllers/Projects.js:595 +#: client/src/controllers/Projects.js:86 msgid "SCM update currently running" msgstr "Actualización SCM actualmente en ejecución" @@ -2722,16 +2902,16 @@ msgstr "SOURCE" msgid "SSH Key" msgstr "Clave SSH" -#: client/src/forms/Credentials.js:256 +#: client/src/forms/Credentials.js:257 msgid "SSH key description" msgstr "Descripción de la clave SSH" -#: client/src/notifications/notificationTemplates.form.js:388 +#: client/src/notifications/notificationTemplates.form.js:387 msgid "SSL Connection" msgstr "Conexión SSL" #: client/src/job-detail/job-detail.partial.html:414 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:108 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:128 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:131 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:96 msgid "STANDARD OUT" @@ -2749,7 +2929,7 @@ msgstr "INICIADO" msgid "STATUS" msgstr "ESTADO" -#: client/src/forms/Credentials.js:120 client/src/forms/Credentials.js:128 +#: client/src/forms/Credentials.js:121 client/src/forms/Credentials.js:129 msgid "STS Token" msgstr "Token STS" @@ -2765,12 +2945,13 @@ msgstr "SISTEMA DE RASTREO" msgid "Satellite 6 URL" msgstr "URL Satellite 6" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:110 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:176 -#: client/src/shared/form-generator.js:1699 +#: client/src/shared/form-generator.js:1708 msgid "Save" msgstr "Guardar" -#: client/src/configuration/auth-form/configuration-auth.controller.js:81 +#: client/src/configuration/auth-form/configuration-auth.controller.js:83 #: client/src/configuration/configuration.controller.js:192 #: client/src/configuration/configuration.controller.js:251 #: client/src/configuration/system-form/configuration-system.controller.js:60 @@ -2781,7 +2962,7 @@ msgstr "Guardar los cambios" msgid "Save successful!" msgstr "Guardado correctamente" -#: client/src/lists/Templates.js:92 +#: client/src/lists/Templates.js:92 client/src/partials/subhome.html:10 msgid "Schedule" msgstr "Planificar" @@ -2789,7 +2970,7 @@ msgstr "Planificar" msgid "Schedule Management Job" msgstr "Planificar trabajo de gestión" -#: client/src/controllers/Projects.js:80 +#: client/src/controllers/Projects.js:78 msgid "Schedule future SCM updates" msgstr "Planificar futuras actualizaciones SCM" @@ -2797,42 +2978,35 @@ msgstr "Planificar futuras actualizaciones SCM" msgid "Schedule future job template runs" msgstr "Planificar futuras ejecuciones de plantilla de trabajo." -#: client/src/lists/ScheduledJobs.js:15 -msgid "Scheduled Jobs" -msgstr "Trabajos programados" - #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:32 -#: client/src/inventories/main.js:100 client/src/jobs/jobs.partial.html:10 -#: client/src/management-jobs/scheduler/main.js:32 -#: client/src/scheduler/main.js:167 client/src/scheduler/main.js:257 -#: client/src/scheduler/main.js:74 +#: client/src/jobs/jobs.partial.html:10 msgid "Schedules" msgstr "Programaciones" -#: client/src/inventory-scripts/inventory-scripts.form.js:62 +#: client/src/inventory-scripts/inventory-scripts.form.js:63 msgid "Script must begin with a hashbang sequence: i.e.... %s" msgstr "El script debe comenzar con la secuencia hashbang: p.e. ....%s" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:83 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:84 msgid "Search" msgstr "Buscar" -#: client/src/forms/Credentials.js:105 +#: client/src/forms/Credentials.js:106 msgid "Secret Key" msgstr "Clave secreta" -#: client/src/forms/Credentials.js:125 +#: client/src/forms/Credentials.js:126 msgid "" "Security Token Service (STS) is a web service that enables you to request " "temporary, limited-privilege credentials for AWS Identity and Access " "Management (IAM) users." msgstr "" -"El Security Token Service (STS) es un servicio web que habilita su solicitud " -"temporalmente y con credenciales con privilegio limitado para usuarios de " +"El Security Token Service (STS) es un servicio web que habilita su solicitud" +" temporalmente y con credenciales con privilegio limitado para usuarios de " "AWS Identity y Access Management (IAM)." -#: client/src/shared/form-generator.js:1703 +#: client/src/shared/form-generator.js:1712 msgid "Select" msgstr "Seleccionar" @@ -2840,26 +3014,26 @@ msgstr "Seleccionar" msgid "Select a role" msgstr "Seleccionar un rol" -#: client/src/configuration/jobs-form/configuration-jobs.controller.js:90 -#: client/src/configuration/ui-form/configuration-ui.controller.js:85 +#: client/src/configuration/jobs-form/configuration-jobs.controller.js:93 +#: client/src/configuration/ui-form/configuration-ui.controller.js:95 msgid "Select commands" msgstr "Seleccionar comandos" -#: client/src/forms/Projects.js:98 +#: client/src/forms/Projects.js:99 msgid "" -"Select from the list of directories found in the Project Base Path. Together " -"the base path and the playbook directory provide the full path used to " +"Select from the list of directories found in the Project Base Path. Together" +" the base path and the playbook directory provide the full path used to " "locate playbooks." msgstr "" "Seleccione desde la lista de directorios encontrados en el directorio base " "del proyecto. Junto al directorio base y el directorio del playbook se " "construirá la ruta completa utilizada para encontrar playbooks." -#: client/src/configuration/auth-form/configuration-auth.controller.js:230 +#: client/src/configuration/auth-form/configuration-auth.controller.js:256 msgid "Select group types" msgstr "Seleccionar un tipo de grupo" -#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:25 +#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:24 msgid "Select roles" msgstr "Seleccionar roles" @@ -2871,8 +3045,8 @@ msgid "" msgstr "" "Seleccione el credential que desea que el trabajo utilizará al conectarse a " "servidores remotos. Escoja un credencial que contenga el usuario y la clave " -"SSH o la contraseña que Ansible necesitará para autentificarse dentro de los " -"sistema remotos" +"SSH o la contraseña que Ansible necesitará para autentificarse dentro de los" +" sistema remotos" #: client/src/forms/JobTemplates.js:86 client/src/forms/WorkflowMaker.js:88 msgid "Select the inventory containing the hosts you want this job to manage." @@ -2891,7 +3065,7 @@ msgstr "" "Seleccionar el proyecto que contiene el playbook que desea ejecutar este " "trabajo." -#: client/src/configuration/system-form/configuration-system.controller.js:170 +#: client/src/configuration/system-form/configuration-system.controller.js:177 msgid "Select types" msgstr "Seleccionar los tipos" @@ -2906,7 +3080,7 @@ msgstr "" "permitiendo el provisionado dentro del Cloud sin necesitar pasar los " "parámetros manualmente a los módulos incluidos." -#: client/src/notifications/notificationTemplates.form.js:86 +#: client/src/notifications/notificationTemplates.form.js:114 msgid "Sender Email" msgstr "Dirección de correo del remitente" @@ -2928,18 +3102,18 @@ msgstr "La configuración del tipo a %s no ejecutará el playbook." #: client/src/forms/WorkflowMaker.js:106 msgid "" -"Setting the type to %s will not execute the playbook. Instead, %s will check " -"playbook syntax, test environment setup and report problems." +"Setting the type to %s will not execute the playbook. Instead, %s will check" +" playbook syntax, test environment setup and report problems." msgstr "" "La configuración del tipo a %s no ejecutará el playbook. En cambio, %s " -"comprobará la sintaxis del playbook, la configuración del entorno de pruebas " -"e informará de problemas." +"comprobará la sintaxis del playbook, la configuración del entorno de pruebas" +" e informará de problemas." #: client/src/main-menu/main-menu.partial.html:147 msgid "Settings" msgstr "Ajustes" -#: client/src/shared/form-generator.js:851 +#: client/src/shared/form-generator.js:857 msgid "Show" msgstr "Mostrar" @@ -2969,10 +3143,15 @@ msgid "" "Skip tags are useful when you have a large playbook, and you want to skip " "specific parts of a play or task." msgstr "" -"Omitir etiquetas es útil cuando se posee de un playbook largo y desea omitir " -"algunas partes de una jugada o tarea." +"Omitir etiquetas es útil cuando se posee de un playbook largo y desea omitir" +" algunas partes de una jugada o tarea." -#: client/src/forms/Credentials.js:76 +#: client/src/partials/subhome.html:8 +#, fuzzy +msgid "Source" +msgstr "FUENTE" + +#: client/src/forms/Credentials.js:77 msgid "Source Control" msgstr "Fuente de control" @@ -2980,7 +3159,7 @@ msgstr "Fuente de control" msgid "Source Details" msgstr "Detalles de la fuente" -#: client/src/notifications/notificationTemplates.form.js:199 +#: client/src/notifications/notificationTemplates.form.js:198 msgid "Source Phone Number" msgstr "Número de teléfono de la fuente" @@ -2988,11 +3167,11 @@ msgstr "Número de teléfono de la fuente" msgid "Source Vars" msgstr "Vars de la fuente" -#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:335 msgid "Specify HTTP Headers in JSON format" msgstr "Especificar las cabeceras HTTP en formato JSON" -#: client/src/forms/Credentials.js:286 +#: client/src/forms/Credentials.js:287 msgid "" "Specify a method for %s operations. This is equivalent to specifying the %s " "parameter, where %s could be %s" @@ -3028,8 +3207,8 @@ msgstr "Hora de inicio" msgid "Start a job using this template" msgstr "Iniciar un trabajo usando esta plantilla" -#: client/src/controllers/Projects.js:582 -#: client/src/controllers/Projects.js:79 +#: client/src/controllers/Projects.js:592 +#: client/src/controllers/Projects.js:77 msgid "Start an SCM update" msgstr "Iniciar una actualización de SCM" @@ -3044,7 +3223,7 @@ msgstr "Iniciado" #: client/src/forms/EventsViewer.js:24 client/src/forms/LogViewerStatus.js:28 #: client/src/job-detail/job-detail.partial.html:26 #: client/src/lists/JobEvents.js:51 -#: client/src/notifications/notification-templates-list/list.controller.js:73 +#: client/src/notifications/notification-templates-list/list.controller.js:71 #: client/src/partials/logviewer.html:4 msgid "Status" msgstr "Estado" @@ -3057,7 +3236,7 @@ msgstr "Subcategoría" msgid "Submit" msgstr "Enviar" -#: client/src/helpers/Jobs.js:230 +#: client/src/helpers/Jobs.js:226 msgid "Submit the request to cancel?" msgstr "¿Enviar la solicitud de cancelación?" @@ -3065,14 +3244,15 @@ msgstr "¿Enviar la solicitud de cancelación?" msgid "Subscription" msgstr "Subscripción" -#: client/src/forms/Credentials.js:152 client/src/forms/Credentials.js:163 +#: client/src/forms/Credentials.js:153 client/src/forms/Credentials.js:164 msgid "Subscription ID" msgstr "ID de suscripción" -#: client/src/forms/Credentials.js:162 +#: client/src/forms/Credentials.js:163 msgid "Subscription ID is an Azure construct, which is mapped to a username." msgstr "" -"El ID de subscripción es un elemento Azure, el cual está asociado al usuario." +"El ID de subscripción es un elemento Azure, el cual está asociado al " +"usuario." #: client/src/notifications/notifications.list.js:38 msgid "Success" @@ -3104,11 +3284,13 @@ msgstr "" "Los auditores de sistema tienen permisos sólo de lectura en esta sección." #: client/src/app.js:344 client/src/helpers/ActivityStream.js:35 +#: client/src/lists/Teams.js:16 client/src/lists/Teams.js:17 #: client/src/organizations/linkout/organizations-linkout.route.js:97 msgid "TEAMS" msgstr "EQUIPOS" -#: client/src/helpers/ActivityStream.js:56 +#: client/src/helpers/ActivityStream.js:56 client/src/lists/Templates.js:17 +#: client/src/lists/Templates.js:18 #: client/src/main-menu/main-menu.partial.html:113 #: client/src/main-menu/main-menu.partial.html:35 #: client/src/templates/list/templates-list.route.js:13 @@ -3127,7 +3309,7 @@ msgstr "" "Etiquetas son útiles cuando se tiene un playbook largo y se desea " "especificar una parte específica de una jugada o tarea." -#: client/src/notifications/notificationTemplates.form.js:316 +#: client/src/notifications/notificationTemplates.form.js:315 msgid "Target URL" msgstr "URL destino" @@ -3139,17 +3321,16 @@ msgstr "Tarea" msgid "Tasks" msgstr "Tareas" -#: client/src/forms/Credentials.js:468 client/src/forms/Inventories.js:127 -#: client/src/forms/Projects.js:256 client/src/forms/Workflows.js:147 +#: client/src/forms/Credentials.js:469 client/src/forms/Inventories.js:128 +#: client/src/forms/Projects.js:263 client/src/forms/Workflows.js:148 msgid "Team Roles" msgstr "Roles de equipo" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:40 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:33 -#: client/src/forms/Users.js:158 client/src/lists/Teams.js:16 -#: client/src/lists/Teams.js:17 +#: client/src/forms/Users.js:158 #: client/src/setup-menu/setup-menu.partial.html:16 -#: client/src/shared/stateDefinitions.factory.js:342 +#: client/src/shared/stateDefinitions.factory.js:345 msgid "Teams" msgstr "Equipos" @@ -3159,11 +3340,10 @@ msgid "Template" msgstr "Plantilla" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:34 -#: client/src/lists/Templates.js:17 client/src/lists/Templates.js:18 msgid "Templates" msgstr "Plantillas" -#: client/src/forms/Credentials.js:338 +#: client/src/forms/Credentials.js:339 msgid "Tenant ID" msgstr "ID inquilino [Tenant]" @@ -3171,8 +3351,8 @@ msgstr "ID inquilino [Tenant]" msgid "Test notification" msgstr "Probar notificación" -#: client/src/shared/form-generator.js:1414 -#: client/src/shared/form-generator.js:1420 +#: client/src/shared/form-generator.js:1423 +#: client/src/shared/form-generator.js:1429 msgid "That value was not found. Please enter or select a valid value." msgstr "" "El valor no fue encontrado. Por favor introduzca o seleccione un valor " @@ -3186,7 +3366,7 @@ msgstr "" "El ID del proyecto es el identificador asignado en GCE. Se construye de dos " "palabras seguidas por tres dígitos. Ejemplo:" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "The SCM update process is running." msgstr "El proceso de actualización SCM está en ejecución." @@ -3194,7 +3374,7 @@ msgstr "El proceso de actualización SCM está en ejecución." msgid "The credential used to run this command." msgstr "El credencial utilizado para ejecutar este comando." -#: client/src/forms/Credentials.js:191 +#: client/src/forms/Credentials.js:192 msgid "" "The email address assigned to the Google Compute Engine %sservice account." msgstr "" @@ -3216,14 +3396,14 @@ msgstr "El inventario en el cual este comando se ejecutará." #: client/src/forms/JobTemplates.js:212 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." +"playbook. 0 signifies the default value from the %sansible configuration " +"file%s." msgstr "" "El número de procesos paralelos o simultáneos a utilizar cuando se ejecuta " "los playbooks. 0 indica el valor por defecto desde el %sfichero de " "configuración ansible%s." -#: client/src/job-results/job-results.controller.js:554 +#: client/src/job-results/job-results.controller.js:567 msgid "The output is too large to display. Please download." msgstr "La salida es muy larga para ser mostrada. Por favor descárguela." @@ -3231,7 +3411,7 @@ msgstr "La salida es muy larga para ser mostrada. Por favor descárguela." msgid "The project value" msgstr "El valor del proyecto" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 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." @@ -3260,20 +3440,20 @@ msgstr "No hay plantillas de trabajo a mostrar por el momento" msgid "There are no jobs to display at this time" msgstr "No hay trabajos a mostrar por el momento" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 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 " +"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 "" "No hay información disponible de la actualización SCM disponible para este " "proyecto. Una actualización no ha sido todavía completada." -#: client/src/configuration/configuration.controller.js:308 +#: client/src/configuration/configuration.controller.js:319 msgid "There was an error resetting value. Returned status:" msgstr "Ha habido un error reiniciando el valor. Estado devuelto:" -#: client/src/configuration/configuration.controller.js:439 +#: client/src/configuration/configuration.controller.js:458 msgid "There was an error resetting values. Returned status:" msgstr "Ha habido un error reiniciando valores. Estado devuelto:" @@ -3285,8 +3465,8 @@ msgstr "Éste no es un número válido." msgid "" "This is the tenant name. This value is usually the same as the username." msgstr "" -"Este es el nombre del inquilino [Tenant]. Este valor normalmente es el mismo " -"que el usuario." +"Este es el nombre del inquilino [Tenant]. Este valor normalmente es el mismo" +" que el usuario." #: client/src/notifications/notifications.list.js:21 msgid "" @@ -3296,16 +3476,24 @@ msgstr "" "La lista contiene las plantillas de notificación añadidas desde la sección " "%sNotificaciones%s" -#: client/src/notifications/notificationTemplates.form.js:202 +#: client/src/notifications/notificationTemplates.form.js:201 msgid "This must be of the form %s." msgstr "Esto debe tener el formato %s" +#: client/src/shared/form-generator.js:745 +#, fuzzy +msgid "" +"This setting has been set manually in a settings file and is now disabled." +msgstr "" +"Este valor ha sido establecido manualmente en el fichero de configuración y " +"ahora está inhabilitado." + #: client/src/forms/Users.js:163 msgid "This user is not a member of any teams" msgstr "Este usuario no es miembro de ningún equipo." -#: client/src/shared/form-generator.js:831 -#: client/src/shared/form-generator.js:945 +#: client/src/shared/form-generator.js:837 +#: client/src/shared/form-generator.js:951 msgid "" "This value does not match the password you entered previously. Please " "confirm that password." @@ -3313,7 +3501,7 @@ msgstr "" "Este valor no corresponde con la contraseña introducida anteriormente. Por " "favor confirme la contraseña." -#: client/src/configuration/configuration.controller.js:464 +#: client/src/configuration/configuration.controller.js:483 msgid "" "This will reset all configuration values to their factory defaults. Are you " "sure you want to proceed?" @@ -3323,7 +3511,7 @@ msgstr "" #: client/src/dashboard/lists/jobs/jobs-list.partial.html:14 #: client/src/lists/Streams.js:28 -#: client/src/notifications/notification-templates-list/list.controller.js:74 +#: client/src/notifications/notification-templates-list/list.controller.js:72 msgid "Time" msgstr "Duración" @@ -3331,12 +3519,12 @@ msgstr "Duración" msgid "Time Remaining" msgstr "Tiempo restante" -#: client/src/forms/Projects.js:191 +#: client/src/forms/Projects.js:198 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." +"update. If it is older than Cache Timeout, it is not considered current, and" +" a new project update will be performed." msgstr "" "Tiempo en segundos a considerar que un proyecto es reciente. Durante la " "ejecución del trabajo y callbacks la tarea del sistema evaluará la fecha y " @@ -3349,9 +3537,10 @@ msgstr "" msgid "Timing" msgstr "Timing" -#: client/src/forms/Credentials.js:126 +#: client/src/forms/Credentials.js:127 msgid "" -"To learn more about the IAM STS Token, refer to the %sAmazon documentation%s." +"To learn more about the IAM STS Token, refer to the %sAmazon " +"documentation%s." msgstr "" "Para aprender más sobre el token de IAM STS, acuda a la documentación de " "%sAmazon%s." @@ -3360,7 +3549,7 @@ msgstr "" msgid "Toggle Output" msgstr "Conmutar salida" -#: client/src/shared/form-generator.js:856 +#: client/src/shared/form-generator.js:862 msgid "Toggle the display of plaintext." msgstr "Conmutar la visualización en texto plano." @@ -3373,8 +3562,8 @@ msgstr "Token" msgid "Traceback" msgstr "Traceback" -#: client/src/forms/Credentials.js:61 client/src/forms/Credentials.js:85 -#: client/src/forms/Teams.js:131 client/src/forms/Users.js:199 +#: client/src/forms/Credentials.js:62 client/src/forms/Credentials.js:86 +#: client/src/forms/Teams.js:132 client/src/forms/Users.js:199 #: client/src/forms/WorkflowMaker.js:34 client/src/lists/AllJobs.js:61 #: client/src/lists/CompletedJobs.js:50 client/src/lists/Credentials.js:39 #: client/src/lists/Projects.js:43 client/src/lists/ScheduledJobs.js:44 @@ -3391,19 +3580,20 @@ msgid "Type Details" msgstr "Detalles del tipo" #: client/src/notifications/notificationTemplates.form.js:100 -#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:214 msgid "Type an option on each line." msgstr "Escriba una opción en cada línea" -#: client/src/notifications/notificationTemplates.form.js:144 -#: client/src/notifications/notificationTemplates.form.js:161 -#: client/src/notifications/notificationTemplates.form.js:374 +#: client/src/notifications/notificationTemplates.form.js:143 +#: client/src/notifications/notificationTemplates.form.js:160 +#: client/src/notifications/notificationTemplates.form.js:373 msgid "Type an option on each line. The pound symbol (#) is not required." msgstr "" -"Escriba una opción en cada línea. El símbolo almohadilla (#) no es necesario." +"Escriba una opción en cada línea. El símbolo almohadilla (#) no es " +"necesario." -#: client/src/controllers/Projects.js:444 -#: client/src/controllers/Projects.js:726 +#: client/src/controllers/Projects.js:453 +#: client/src/controllers/Projects.js:752 msgid "URL popover text" msgstr "Texto 'popover' de la URL" @@ -3412,19 +3602,20 @@ msgid "USERNAME" msgstr "NOMBRE DE USUARIO" #: client/src/app.js:368 client/src/helpers/ActivityStream.js:32 +#: client/src/lists/Users.js:20 client/src/lists/Users.js:21 #: client/src/organizations/linkout/organizations-linkout.route.js:41 msgid "USERS" msgstr "USUARIOS" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "Update Not Found" msgstr "Actualización no encontrada" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "Update in Progress" msgstr "Actualización en curso" -#: client/src/forms/Projects.js:172 +#: client/src/forms/Projects.js:179 msgid "Update on Launch" msgstr "Actualizar al ejecutar" @@ -3432,27 +3623,27 @@ msgstr "Actualizar al ejecutar" msgid "Upgrade" msgstr "Actualizar" -#: client/src/notifications/notificationTemplates.form.js:408 +#: client/src/notifications/notificationTemplates.form.js:407 msgid "Use SSL" msgstr "Utilizar SSL" -#: client/src/notifications/notificationTemplates.form.js:403 +#: client/src/notifications/notificationTemplates.form.js:402 msgid "Use TLS" msgstr "Utilizar TLS" -#: client/src/forms/Credentials.js:77 +#: client/src/forms/Credentials.js:78 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." +"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 "" -"Utilizado para verificar y sincronizar los repositorios playbook con sistema " -"remoto de gestión de código fuente como Git, Subversion (svn) o Mercurial " +"Utilizado para verificar y sincronizar los repositorios playbook con sistema" +" remoto de gestión de código fuente como Git, Subversion (svn) o Mercurial " "(hg). Estos credenciales son utilizados por proyectos." -#: client/src/forms/Credentials.js:457 client/src/forms/Inventories.js:116 -#: client/src/forms/Organizations.js:83 client/src/forms/Projects.js:245 -#: client/src/forms/Teams.js:94 client/src/forms/Workflows.js:136 +#: client/src/forms/Credentials.js:458 client/src/forms/Inventories.js:117 +#: client/src/forms/Organizations.js:83 client/src/forms/Projects.js:252 +#: client/src/forms/Teams.js:95 client/src/forms/Workflows.js:137 msgid "User" msgstr "Usuario" @@ -3465,7 +3656,7 @@ msgid "User Type" msgstr "Tipo de usuario" #: client/src/access/rbac-multiselect/permissionsUsers.list.js:30 -#: client/src/forms/Users.js:49 client/src/helpers/Credentials.js:118 +#: client/src/forms/Users.js:60 client/src/helpers/Credentials.js:118 #: client/src/helpers/Credentials.js:225 client/src/helpers/Credentials.js:254 #: client/src/helpers/Credentials.js:32 client/src/helpers/Credentials.js:56 #: client/src/helpers/Credentials.js:89 client/src/lists/Users.js:31 @@ -3473,7 +3664,7 @@ msgstr "Tipo de usuario" msgid "Username" msgstr "Usuario" -#: client/src/forms/Credentials.js:81 +#: client/src/forms/Credentials.js:82 msgid "" "Usernames, passwords, and access keys for authenticating to the specified " "cloud or infrastructure provider. These are used for dynamic inventory " @@ -3486,8 +3677,7 @@ msgstr "" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:35 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:35 -#: client/src/forms/Organizations.js:65 client/src/forms/Teams.js:76 -#: client/src/lists/Users.js:20 client/src/lists/Users.js:21 +#: client/src/forms/Organizations.js:65 client/src/forms/Teams.js:77 #: client/src/setup-menu/setup-menu.partial.html:10 msgid "Users" msgstr "Usuarios" @@ -3510,11 +3700,12 @@ msgstr "" msgid "Valid License" msgstr "Licencia válida" -#: client/src/forms/Inventories.js:55 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:56 +#: client/src/forms/Hosts.js:66 client/src/forms/Inventories.js:56 msgid "Variables" msgstr "Variables" -#: client/src/forms/Credentials.js:392 +#: client/src/forms/Credentials.js:393 msgid "Vault Password" msgstr "Contraseña Vault" @@ -3524,7 +3715,6 @@ msgstr "Contraseña Vault" msgid "Verbosity" msgstr "Nivel de detalle" -#: client/src/about/about.controller.js:24 #: client/src/license/license.partial.html:15 msgid "Version" msgstr "Versión" @@ -3547,16 +3737,18 @@ msgstr "Mostrar el flujo de actividad" msgid "View Documentation" msgstr "Mostrar la documentación" -#: client/src/forms/Inventories.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:69 +#: client/src/forms/Hosts.js:76 client/src/forms/Inventories.js:66 msgid "View JSON examples at %s" msgstr "Mostrar los ejemplos JSON en %s" -#: client/src/forms/JobTemplates.js:466 client/src/forms/Workflows.js:164 -#: client/src/shared/form-generator.js:1727 +#: client/src/forms/JobTemplates.js:470 client/src/forms/Workflows.js:165 +#: client/src/shared/form-generator.js:1736 msgid "View Survey" msgstr "Mostrar el cuestionario" -#: client/src/forms/Inventories.js:66 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:70 +#: client/src/forms/Hosts.js:77 client/src/forms/Inventories.js:67 msgid "View YAML examples at %s" msgstr "Mostrar los ejemplos YAML en %s" @@ -3608,11 +3800,11 @@ msgstr "Mostrar plantilla" msgid "View the job" msgstr "Mostrar el trabajo" -#: client/src/lists/Projects.js:109 +#: client/src/lists/Projects.js:110 msgid "View the project" msgstr "Mostrar el proyecto" -#: client/src/lists/ScheduledJobs.js:75 +#: client/src/lists/ScheduledJobs.js:76 msgid "View the schedule" msgstr "Mostrar el calendario" @@ -3635,7 +3827,7 @@ msgstr "FLUJO DE TRABAJO" msgid "Waiting..." msgstr "Esperando..." -#: client/src/configuration/auth-form/configuration-auth.controller.js:68 +#: client/src/configuration/auth-form/configuration-auth.controller.js:70 #: client/src/configuration/configuration.controller.js:179 #: client/src/configuration/configuration.controller.js:241 #: client/src/configuration/system-form/configuration-system.controller.js:47 @@ -3662,7 +3854,7 @@ msgstr "" "Cuando una plantilla es lanzada como un trabajo, configurar el tipo a %s " "ejecutará el playbook, ejecutará las tareas en los servidores seleccionados." -#: client/src/forms/Workflows.js:188 client/src/shared/form-generator.js:1731 +#: client/src/forms/Workflows.js:189 client/src/shared/form-generator.js:1740 msgid "Workflow Editor" msgstr "Editor de flujo de trabajo" @@ -3677,12 +3869,13 @@ msgstr "Plantillas de flujo de trabajo" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:58 msgid "" -"You can create a job template here." -msgstr "Usted puede crear una plantilla de trabajo here." +msgstr "" +"Usted puede crear una plantilla de trabajo aquí." -# /templates/add_job_template">aquí." -#: client/src/controllers/Projects.js:510 +#: client/src/controllers/Projects.js:519 msgid "You do not have access to view this property" msgstr "Usted no tiene permiso para ver esta propiedad" @@ -3690,7 +3883,7 @@ msgstr "Usted no tiene permiso para ver esta propiedad" msgid "You do not have permission to add a job template." msgstr "Usted no tiene permiso para añadir una plantilla de trabajo." -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 msgid "You do not have permission to add a project." msgstr "Usted no tiene permiso para añadir un proyecto." @@ -3698,48 +3891,48 @@ msgstr "Usted no tiene permiso para añadir un proyecto." msgid "You do not have permission to add a user." msgstr "Usted no tiene permiso para añadir un usuario." -#: client/src/configuration/auth-form/configuration-auth.controller.js:67 +#: client/src/configuration/auth-form/configuration-auth.controller.js:69 #: client/src/configuration/configuration.controller.js:178 #: client/src/configuration/configuration.controller.js:240 #: client/src/configuration/system-form/configuration-system.controller.js:46 msgid "" -"You have unsaved changes. Would you like to proceed without " -"saving?" +"You have unsaved changes. Would you like to proceed without" +" saving?" msgstr "" -"Usted tiene modificaciones sin guardar.¿Desea proceder sin " +"Usted tiene modificaciones sin guardar.¿Desea proceder sin " "guardarlas?" -#: client/src/shared/form-generator.js:957 +#: client/src/shared/form-generator.js:963 msgid "Your password must be %d characters long." msgstr "Su password debe ser de longitud %d." -#: client/src/shared/form-generator.js:962 +#: client/src/shared/form-generator.js:968 msgid "Your password must contain a lowercase letter." msgstr "Su password debe contener al menos una letra minúscula." -#: client/src/shared/form-generator.js:972 +#: client/src/shared/form-generator.js:978 msgid "Your password must contain a number." msgstr "Su password debe contener un número." -#: client/src/shared/form-generator.js:967 +#: client/src/shared/form-generator.js:973 msgid "Your password must contain an uppercase letter." msgstr "Su password debe contener una letra mayúscula." -#: client/src/shared/form-generator.js:977 +#: client/src/shared/form-generator.js:983 msgid "Your password must contain one of the following characters: %s" msgstr "Su password debe contener uno de los siguientes caracteres: %s" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "Your request to cancel the update was submitted to the task manager." msgstr "" -"Su solicitud de cancelación de la actualización ha sido enviada al gestor de " -"tareas." +"Su solicitud de cancelación de la actualización ha sido enviada al gestor de" +" tareas." #: client/src/login/loginModal/loginModal.partial.html:22 msgid "Your session timed out due to inactivity. Please sign in." msgstr "Su sesión ha expirado debido a inactividad. Por favor conéctese." -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "and" msgstr "y" @@ -3751,18 +3944,18 @@ msgstr "nombre" msgid "organization" msgstr "organización" -#: client/src/forms/Credentials.js:139 client/src/forms/Credentials.js:365 +#: client/src/forms/Credentials.js:140 client/src/forms/Credentials.js:366 msgid "set in helpers/credentials" msgstr "definir en helpers/credentials" -#: client/src/forms/Credentials.js:382 +#: client/src/forms/Credentials.js:383 msgid "v2 URLs%s - leave blank" msgstr "v2 URLs%s - dejad en blanco" -#: client/src/forms/Credentials.js:383 +#: client/src/forms/Credentials.js:384 msgid "v3 default%s - set to 'default'" msgstr "v3 default%s - establecer a 'default'" -#: client/src/forms/Credentials.js:384 +#: client/src/forms/Credentials.js:385 msgid "v3 multi-domain%s - your domain name" msgstr "v3 multi-domain%s - vuestro nombre de dominio" From e8126aab34d396b1416d3fb20c0a23007a1cec13 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 20 Apr 2017 11:28:05 -0400 Subject: [PATCH 32/40] Merge pull request #6068 from wenottingham/release_3.1.3 Adjust some hardcoded usages of 'awx' to use 'aw_user' and 'aw_group'. From a44e5b208abc54f145d57fa0514421f12428b8ed Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Thu, 20 Apr 2017 12:27:58 -0400 Subject: [PATCH 33/40] fix brace interpolation on standard out pane --- awx/ui/client/src/job-results/parse-stdout.service.js | 2 +- awx/ui/tests/spec/job-results/parse-stdout.service-test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index 6df6b7c381..fb5924e2e4 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -289,7 +289,7 @@ export default ['$log', 'moment', function($log, moment){ return `
${this.getCollapseIcon(event, lineArr[1])}${lineArr[0]}
-
${this.prettify(lineArr[1])}${this.getStartTimeBadge(event, lineArr[1])}
`; }); diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 586be5a6be..ab2249c101 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -204,7 +204,7 @@ describe('parseStdoutService', () => { var expectedString = `
collapse_icon_dom13
-
prettified_line
+
prettified_line
`; expect(returnedString).toBe(expectedString); }); From c058f76960791d225cc5b693e7ac3b8731569cc7 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Wed, 8 Mar 2017 12:30:30 -0500 Subject: [PATCH 34/40] value_to_python should encode lookup fields as ascii --- awx/api/filters.py | 5 +++++ awx/main/tests/unit/api/test_filters.py | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/awx/api/filters.py b/awx/api/filters.py index 6d5c7920c5..94a3fcc33f 100644 --- a/awx/api/filters.py +++ b/awx/api/filters.py @@ -149,6 +149,11 @@ class FieldLookupBackend(BaseFilterBackend): return field.to_python(value) def value_to_python(self, model, lookup, value): + try: + lookup = lookup.encode("ascii") + except UnicodeEncodeError: + raise ValueError("%r is not an allowed field name. Must be ascii encodable." % lookup) + field, new_lookup = self.get_field_from_lookup(model, lookup) # Type names are stored without underscores internally, but are presented and diff --git a/awx/main/tests/unit/api/test_filters.py b/awx/main/tests/unit/api/test_filters.py index 6570ada6f7..45eec0df1f 100644 --- a/awx/main/tests/unit/api/test_filters.py +++ b/awx/main/tests/unit/api/test_filters.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import pytest from rest_framework.exceptions import PermissionDenied @@ -24,6 +26,14 @@ def test_valid_in(valid_value): assert 'foo' in value +def test_invalid_field(): + invalid_field = u"ヽヾ" + field_lookup = FieldLookupBackend() + with pytest.raises(ValueError) as excinfo: + field_lookup.value_to_python(WorkflowJobTemplate, invalid_field, 'foo') + assert 'is not an allowed field name. Must be ascii encodable.' in excinfo.value.message + + @pytest.mark.parametrize('lookup_suffix', ['', 'contains', 'startswith', 'in']) @pytest.mark.parametrize('password_field', Credential.PASSWORD_FIELDS) def test_filter_on_password_field(password_field, lookup_suffix): From 74636d3623e9900e6b5ea4d7f5f755d0287e61cc Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Thu, 20 Apr 2017 15:03:34 -0400 Subject: [PATCH 35/40] Merge pull request #6082 from shanemcd/5959 Stop / start ansible-tower-service during restores From 3a81ca0dce0b80f764162d696fb4c3faed1bc3c0 Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Mon, 24 Apr 2017 17:43:20 -0400 Subject: [PATCH 36/40] Restore ability of parsing extra_vars string for provisioning callback. --- awx/main/tests/unit/utils/common/test_common.py | 11 +++++++++++ awx/main/utils/common.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/awx/main/tests/unit/utils/common/test_common.py b/awx/main/tests/unit/utils/common/test_common.py index 6542d64cf0..95ba3b8b9f 100644 --- a/awx/main/tests/unit/utils/common/test_common.py +++ b/awx/main/tests/unit/utils/common/test_common.py @@ -2,6 +2,7 @@ # Copyright (c) 2017 Ansible, Inc. # All Rights Reserved. +import pytest from awx.conf.models import Setting from awx.main.utils import common @@ -52,3 +53,13 @@ def test_encrypt_field_with_ask(): def test_encrypt_field_with_empty_value(): encrypted = common.encrypt_field(Setting(value=None), 'value') assert encrypted is None + + +@pytest.mark.parametrize('input_, output', [ + ({"foo": "bar"}, {"foo": "bar"}), + ('{"foo": "bar"}', {"foo": "bar"}), + ('---\nfoo: bar', {"foo": "bar"}), + (4399, {}), +]) +def test_parse_yaml_or_json(input_, output): + assert common.parse_yaml_or_json(input_) == output diff --git a/awx/main/utils/common.py b/awx/main/utils/common.py index 50ccb3bf89..843988a2d5 100644 --- a/awx/main/utils/common.py +++ b/awx/main/utils/common.py @@ -863,8 +863,8 @@ class OutputEventFilter(object): def callback_filter_out_ansible_extra_vars(extra_vars): extra_vars_redacted = {} + extra_vars = parse_yaml_or_json(extra_vars) for key, value in extra_vars.iteritems(): if not key.startswith('ansible_'): extra_vars_redacted[key] = value return extra_vars_redacted - From 381b47201b3189067a49797d059912e53cdd3bea Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Mon, 24 Apr 2017 16:47:17 -0400 Subject: [PATCH 37/40] Allow exception view to accept all valid HTTP methods. --- awx/main/tests/unit/test_views.py | 37 +++++++++++++++++++++++++++++++ awx/main/views.py | 18 ++++++++++++--- 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 awx/main/tests/unit/test_views.py diff --git a/awx/main/tests/unit/test_views.py b/awx/main/tests/unit/test_views.py new file mode 100644 index 0000000000..2204635eb6 --- /dev/null +++ b/awx/main/tests/unit/test_views.py @@ -0,0 +1,37 @@ +import pytest +import mock + +# Django REST Framework +from rest_framework import exceptions + +# AWX +from awx.main.views import ApiErrorView + + +HTTP_METHOD_NAMES = [ + 'get', + 'post', + 'put', + 'patch', + 'delete', + 'head', + 'options', + 'trace', +] + + +@pytest.fixture +def api_view_obj_fixture(): + return ApiErrorView() + + +@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES) +def test_exception_view_allow_http_methods(method_name): + assert hasattr(ApiErrorView, method_name) + + +@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES) +def test_exception_view_raises_exception(api_view_obj_fixture, method_name): + request_mock = mock.MagicMock() + with pytest.raises(exceptions.APIException): + getattr(api_view_obj_fixture, method_name)(request_mock) diff --git a/awx/main/views.py b/awx/main/views.py index f476f81cfd..c8bcfa304f 100644 --- a/awx/main/views.py +++ b/awx/main/views.py @@ -10,20 +10,32 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import exceptions, permissions, views +def _force_raising_exception(view_obj, request, format=None): + raise view_obj.exception_class() + + class ApiErrorView(views.APIView): authentication_classes = [] permission_classes = (permissions.AllowAny,) metadata_class = None - allowed_methods = ('GET', 'HEAD') exception_class = exceptions.APIException view_name = _('API Error') def get_view_name(self): return self.view_name - def get(self, request, format=None): - raise self.exception_class() + def finalize_response(self, request, response, *args, **kwargs): + response = super(ApiErrorView, self).finalize_response(request, response, *args, **kwargs) + try: + del response['Allow'] + except Exception: + pass + return response + + +for method_name in ApiErrorView.http_method_names: + setattr(ApiErrorView, method_name, _force_raising_exception) def handle_error(request, status=404, **kwargs): From 86ae3082a43b034ec0e2854b5e40920ad2547eac Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Tue, 25 Apr 2017 10:37:45 -0700 Subject: [PATCH 38/40] removing UI parsing for LDAP User and Group Search fields the UI parsing was formatting the user input in a way that makes the API angry --- .../configuration/configuration.controller.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index cc477d353b..5cfdf1763d 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -75,7 +75,10 @@ export default [ if(key === "AD_HOC_COMMANDS"){ $scope[key] = data[key].toString(); } - else{ + else if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ + $scope[key] = data[key]; + } + else { $scope[key] = ConfigurationUtils.arrayToList(data[key], key); } @@ -375,8 +378,15 @@ export default [ payload[key] = $scope[key].value; } } else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) { - // Parse lists - payload[key] = ConfigurationUtils.listToArray($scope[key], key); + + if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ + payload[key] = $scope[key]; + } + else { + // Parse lists + payload[key] = ConfigurationUtils.listToArray($scope[key], key); + } + } else if($scope.configDataResolve[key].type === 'nested object') { if($scope[key] === '') { From b5d36e4038b4c4f8f0b1c6cef7014cc451f5e53f Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Tue, 25 Apr 2017 14:47:14 -0700 Subject: [PATCH 39/40] making ldap user/group search fields into codemirror instances --- .../auth-form/sub-forms/auth-ldap.form.js | 14 ++++++++++---- .../src/configuration/configuration.controller.js | 5 +++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js index 0943d21b27..3ae57a011d 100644 --- a/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js +++ b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js @@ -26,8 +26,18 @@ export default ['i18n', function(i18n) { }, AUTH_LDAP_USER_SEARCH: { type: 'textarea', + rows: 6, + codeMirror: true, + class: 'Form-textAreaLabel Form-formGroup--fullWidth', reset: 'AUTH_LDAP_USER_SEARCH' }, + AUTH_LDAP_GROUP_SEARCH: { + type: 'textarea', + rows: 6, + codeMirror: true, + class: 'Form-textAreaLabel Form-formGroup--fullWidth', + reset: 'AUTH_LDAP_GROUP_SEARCH' + }, AUTH_LDAP_USER_DN_TEMPLATE: { type: 'text', reset: 'AUTH_LDAP_USER_DN_TEMPLATE' @@ -39,10 +49,6 @@ export default ['i18n', function(i18n) { codeMirror: true, class: 'Form-textAreaLabel Form-formGroup--fullWidth', }, - AUTH_LDAP_GROUP_SEARCH: { - type: 'textarea', - reset: 'AUTH_LDAP_GROUP_SEARCH' - }, AUTH_LDAP_GROUP_TYPE: { type: 'select', reset: 'AUTH_LDAP_GROUP_TYPE', diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index 5cfdf1763d..16f40901db 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -76,7 +76,7 @@ export default [ $scope[key] = data[key].toString(); } else if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ - $scope[key] = data[key]; + $scope[key] = JSON.stringify(data[key]); } else { $scope[key] = ConfigurationUtils.arrayToList(data[key], key); @@ -380,7 +380,8 @@ export default [ } else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) { if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ - payload[key] = $scope[key]; + payload[key] = $scope[key] === "{}" ? [] : ToJSON($scope.parseType, + $scope[key]); } else { // Parse lists From d14a55911b137c123cd76adbf6e5c2a4b77d9c2f Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Fri, 28 Apr 2017 13:46:54 -0400 Subject: [PATCH 40/40] ack fact scan messages * Fixes a bug where fact rabbit messages would build up because we never explicitly ack them. --- awx/main/management/commands/run_fact_cache_receiver.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/awx/main/management/commands/run_fact_cache_receiver.py b/awx/main/management/commands/run_fact_cache_receiver.py index 5a111c6fa2..f7d843d5fa 100644 --- a/awx/main/management/commands/run_fact_cache_receiver.py +++ b/awx/main/management/commands/run_fact_cache_receiver.py @@ -61,12 +61,15 @@ class FactBrokerWorker(ConsumerMixin): host_obj = Host.objects.get(name=hostname, inventory__id=inventory_id) except Fact.DoesNotExist: logger.warn('Failed to intake fact. Host does not exist <%s, %s>' % (hostname, inventory_id)) + message.ack() return except Fact.MultipleObjectsReturned: logger.warn('Database inconsistent. Multiple Hosts found for <%s, %s>.' % (hostname, inventory_id)) + message.ack() return None except Exception as e: logger.error("Exception communicating with Fact Cache Database: %s" % str(e)) + message.ack() return None (module_name, facts) = self.process_facts(facts_data) @@ -84,6 +87,7 @@ class FactBrokerWorker(ConsumerMixin): logger.info('Created new fact <%s, %s>' % (fact_obj.id, module_name)) analytics_logger.info('Received message with fact data', extra=dict( module_name=module_name, facts_data=facts)) + message.ack() return fact_obj