diff --git a/awx/locale/django.pot b/awx/locale/django.pot index ebfd9bcb4c..9a5f1ab583 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-01-27 17:35+0000\n" +"POT-Creation-Date: 2017-01-30 03:44-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,1029 +17,1030 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: api/authentication.py:67 +#: awx/api/authentication.py:67 msgid "Invalid token header. No credentials provided." msgstr "" -#: api/authentication.py:70 +#: awx/api/authentication.py:70 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: api/authentication.py:105 +#: awx/api/authentication.py:105 msgid "User inactive or deleted" msgstr "" -#: api/authentication.py:161 +#: awx/api/authentication.py:161 msgid "Invalid task token" msgstr "" -#: api/conf.py:12 +#: awx/api/conf.py:12 msgid "Idle Time Force Log Out" msgstr "" -#: api/conf.py:13 +#: awx/api/conf.py:13 msgid "" "Number of seconds that a user is inactive before they will need to login " "again." msgstr "" -#: api/conf.py:14 api/conf.py:24 api/conf.py:33 sso/conf.py:124 -#: sso/conf.py:135 sso/conf.py:147 sso/conf.py:162 +#: 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 "" -#: api/conf.py:22 +#: awx/api/conf.py:22 msgid "Maximum number of simultaneous logins" msgstr "" -#: api/conf.py:23 +#: awx/api/conf.py:23 msgid "" "Maximum number of simultaneous logins a user may have. To disable enter -1." msgstr "" -#: api/conf.py:31 +#: awx/api/conf.py:31 msgid "Enable HTTP Basic Auth" msgstr "" -#: api/conf.py:32 +#: awx/api/conf.py:32 msgid "Enable HTTP Basic Auth for the API Browser." msgstr "" -#: api/generics.py:462 +#: awx/api/generics.py:462 msgid "\"id\" is required to disassociate" msgstr "" -#: api/metadata.py:50 +#: awx/api/metadata.py:50 msgid "Database ID for this {}." msgstr "" -#: api/metadata.py:51 +#: awx/api/metadata.py:51 msgid "Name of this {}." msgstr "" -#: api/metadata.py:52 +#: awx/api/metadata.py:52 msgid "Optional description of this {}." msgstr "" -#: api/metadata.py:53 +#: awx/api/metadata.py:53 msgid "Data type for this {}." msgstr "" -#: api/metadata.py:54 +#: awx/api/metadata.py:54 msgid "URL for this {}." msgstr "" -#: api/metadata.py:55 +#: awx/api/metadata.py:55 msgid "Data structure with URLs of related resources." msgstr "" -#: api/metadata.py:56 +#: awx/api/metadata.py:56 msgid "Data structure with name/description for related resources." msgstr "" -#: api/metadata.py:57 +#: awx/api/metadata.py:57 msgid "Timestamp when this {} was created." msgstr "" -#: api/metadata.py:58 +#: awx/api/metadata.py:58 msgid "Timestamp when this {} was last modified." msgstr "" -#: api/parsers.py:31 +#: awx/api/parsers.py:31 #, python-format msgid "JSON parse error - %s" msgstr "" -#: api/serializers.py:248 +#: awx/api/serializers.py:250 msgid "Playbook Run" msgstr "" -#: api/serializers.py:249 +#: awx/api/serializers.py:251 msgid "Command" msgstr "" -#: api/serializers.py:250 +#: awx/api/serializers.py:252 msgid "SCM Update" msgstr "" -#: api/serializers.py:251 +#: awx/api/serializers.py:253 msgid "Inventory Sync" msgstr "" -#: api/serializers.py:252 +#: awx/api/serializers.py:254 msgid "Management Job" msgstr "" -#: api/serializers.py:253 +#: awx/api/serializers.py:255 msgid "Workflow Job" msgstr "" -#: api/serializers.py:254 +#: awx/api/serializers.py:256 msgid "Workflow Template" msgstr "" -#: api/serializers.py:656 api/serializers.py:714 api/views.py:3805 +#: awx/api/serializers.py:658 awx/api/serializers.py:716 awx/api/views.py:3810 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " "supported for sizes over %(supported_size)d bytes" msgstr "" -#: api/serializers.py:729 +#: awx/api/serializers.py:731 msgid "Write-only field used to change the password." msgstr "" -#: api/serializers.py:731 +#: awx/api/serializers.py:733 msgid "Set if the account is managed by an external service" msgstr "" -#: api/serializers.py:755 +#: awx/api/serializers.py:757 msgid "Password required for new User." msgstr "" -#: api/serializers.py:839 +#: awx/api/serializers.py:841 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "" -#: api/serializers.py:991 +#: awx/api/serializers.py:993 msgid "Organization is missing" msgstr "" -#: api/serializers.py:997 +#: awx/api/serializers.py:999 msgid "Array of playbooks available within this project." msgstr "" -#: api/serializers.py:1179 +#: awx/api/serializers.py:1181 #, python-format msgid "Invalid port specification: %s" msgstr "" -#: api/serializers.py:1207 main/validators.py:193 +#: awx/api/serializers.py:1209 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "" -#: api/serializers.py:1264 +#: awx/api/serializers.py:1266 msgid "Invalid group name." msgstr "" -#: api/serializers.py:1339 +#: awx/api/serializers.py:1341 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" -#: api/serializers.py:1392 +#: awx/api/serializers.py:1394 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "" -#: api/serializers.py:1396 +#: awx/api/serializers.py:1398 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" -#: api/serializers.py:1398 +#: awx/api/serializers.py:1400 msgid "'source_script' doesn't exist." msgstr "" -#: api/serializers.py:1757 +#: awx/api/serializers.py:1759 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 "" -#: api/serializers.py:1762 +#: awx/api/serializers.py:1764 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 "" -#: api/serializers.py:1767 +#: awx/api/serializers.py:1769 msgid "" "Inherit permissions from organization roles. If provided on creation, do not " "give either user or team." msgstr "" -#: api/serializers.py:1783 +#: awx/api/serializers.py:1785 msgid "Missing 'user', 'team', or 'organization'." msgstr "" -#: api/serializers.py:1796 +#: awx/api/serializers.py:1798 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -#: api/serializers.py:1888 +#: awx/api/serializers.py:1890 msgid "This field is required." msgstr "" -#: api/serializers.py:1890 api/serializers.py:1892 +#: awx/api/serializers.py:1892 awx/api/serializers.py:1894 msgid "Playbook not found for project." msgstr "" -#: api/serializers.py:1894 +#: awx/api/serializers.py:1896 msgid "Must select playbook for project." msgstr "" -#: api/serializers.py:1958 main/models/jobs.py:278 +#: awx/api/serializers.py:1960 awx/main/models/jobs.py:278 msgid "Scan jobs must be assigned a fixed inventory." msgstr "" -#: api/serializers.py:1960 main/models/jobs.py:281 +#: awx/api/serializers.py:1962 awx/main/models/jobs.py:281 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "" -#: api/serializers.py:1963 +#: awx/api/serializers.py:1965 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" -#: api/serializers.py:2023 +#: awx/api/serializers.py:2025 msgid "Invalid job template." msgstr "" -#: api/serializers.py:2108 +#: awx/api/serializers.py:2110 msgid "Credential not found or deleted." msgstr "" -#: api/serializers.py:2110 +#: awx/api/serializers.py:2112 msgid "Job Template Project is missing or undefined." msgstr "" -#: api/serializers.py:2112 +#: awx/api/serializers.py:2114 msgid "Job Template Inventory is missing or undefined." msgstr "" -#: api/serializers.py:2397 +#: awx/api/serializers.py:2399 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" -#: api/serializers.py:2402 +#: awx/api/serializers.py:2404 msgid "Workflow job template is missing during creation." msgstr "" -#: api/serializers.py:2407 +#: awx/api/serializers.py:2409 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "" -#: api/serializers.py:2645 +#: awx/api/serializers.py:2647 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "" -#: api/serializers.py:2671 +#: awx/api/serializers.py:2673 msgid "Must be a valid JSON or YAML dictionary." msgstr "" -#: api/serializers.py:2813 +#: awx/api/serializers.py:2815 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" -#: api/serializers.py:2836 +#: awx/api/serializers.py:2838 msgid "No values specified for field '{}'" msgstr "" -#: api/serializers.py:2841 +#: awx/api/serializers.py:2843 msgid "Missing required fields for Notification Configuration: {}." msgstr "" -#: api/serializers.py:2844 +#: awx/api/serializers.py:2846 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "" -#: api/serializers.py:2897 +#: awx/api/serializers.py:2899 msgid "Inventory Source must be a cloud resource." msgstr "" -#: api/serializers.py:2899 +#: awx/api/serializers.py:2901 msgid "Manual Project can not have a schedule set." msgstr "" -#: api/serializers.py:2921 +#: awx/api/serializers.py:2923 msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -#: api/serializers.py:2923 +#: awx/api/serializers.py:2925 msgid "Multiple DTSTART is not supported." msgstr "" -#: api/serializers.py:2925 +#: awx/api/serializers.py:2927 msgid "RRULE require in rrule." msgstr "" -#: api/serializers.py:2927 +#: awx/api/serializers.py:2929 msgid "Multiple RRULE is not supported." msgstr "" -#: api/serializers.py:2929 +#: awx/api/serializers.py:2931 msgid "INTERVAL required in rrule." msgstr "" -#: api/serializers.py:2931 +#: awx/api/serializers.py:2933 msgid "TZID is not supported." msgstr "" -#: api/serializers.py:2933 +#: awx/api/serializers.py:2935 msgid "SECONDLY is not supported." msgstr "" -#: api/serializers.py:2935 +#: awx/api/serializers.py:2937 msgid "Multiple BYMONTHDAYs not supported." msgstr "" -#: api/serializers.py:2937 +#: awx/api/serializers.py:2939 msgid "Multiple BYMONTHs not supported." msgstr "" -#: api/serializers.py:2939 +#: awx/api/serializers.py:2941 msgid "BYDAY with numeric prefix not supported." msgstr "" -#: api/serializers.py:2941 +#: awx/api/serializers.py:2943 msgid "BYYEARDAY not supported." msgstr "" -#: api/serializers.py:2943 +#: awx/api/serializers.py:2945 msgid "BYWEEKNO not supported." msgstr "" -#: api/serializers.py:2947 +#: awx/api/serializers.py:2949 msgid "COUNT > 999 is unsupported." msgstr "" -#: api/serializers.py:2951 +#: awx/api/serializers.py:2953 msgid "rrule parsing failed validation." msgstr "" -#: api/serializers.py:2969 +#: awx/api/serializers.py:2971 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" msgstr "" -#: api/serializers.py:2971 +#: awx/api/serializers.py:2973 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 "" -#: api/serializers.py:2974 +#: awx/api/serializers.py:2976 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 "" -#: api/serializers.py:2977 +#: awx/api/serializers.py:2979 msgid "The action taken with respect to the given object(s)." msgstr "" -#: api/serializers.py:3077 +#: awx/api/serializers.py:3086 msgid "Unable to login with provided credentials." msgstr "" -#: api/serializers.py:3079 +#: awx/api/serializers.py:3088 msgid "Must include \"username\" and \"password\"." msgstr "" -#: api/views.py:99 +#: awx/api/views.py:99 msgid "Your license does not allow use of the activity stream." msgstr "" -#: api/views.py:109 +#: awx/api/views.py:109 msgid "Your license does not permit use of system tracking." msgstr "" -#: api/views.py:119 +#: awx/api/views.py:119 msgid "Your license does not allow use of workflows." msgstr "" -#: api/views.py:127 templates/rest_framework/api.html:28 +#: awx/api/views.py:127 awx/templates/rest_framework/api.html:28 msgid "REST API" msgstr "" -#: api/views.py:134 templates/rest_framework/api.html:4 +#: awx/api/views.py:134 awx/templates/rest_framework/api.html:4 msgid "Ansible Tower REST API" msgstr "" -#: api/views.py:150 +#: awx/api/views.py:150 msgid "Version 1" msgstr "" -#: api/views.py:201 +#: awx/api/views.py:201 msgid "Ping" msgstr "" -#: api/views.py:230 conf/apps.py:12 +#: awx/api/views.py:230 awx/conf/apps.py:12 msgid "Configuration" msgstr "" -#: api/views.py:283 +#: awx/api/views.py:283 msgid "Invalid license data" msgstr "" -#: api/views.py:285 +#: awx/api/views.py:285 msgid "Missing 'eula_accepted' property" msgstr "" -#: api/views.py:289 +#: awx/api/views.py:289 msgid "'eula_accepted' value is invalid" msgstr "" -#: api/views.py:292 +#: awx/api/views.py:292 msgid "'eula_accepted' must be True" msgstr "" -#: api/views.py:299 +#: awx/api/views.py:299 msgid "Invalid JSON" msgstr "" -#: api/views.py:307 +#: awx/api/views.py:307 msgid "Invalid License" msgstr "" -#: api/views.py:317 +#: awx/api/views.py:317 msgid "Invalid license" msgstr "" -#: api/views.py:325 +#: awx/api/views.py:325 #, python-format msgid "Failed to remove license (%s)" msgstr "" -#: api/views.py:330 +#: awx/api/views.py:330 msgid "Dashboard" msgstr "" -#: api/views.py:436 +#: awx/api/views.py:436 msgid "Dashboard Jobs Graphs" msgstr "" -#: api/views.py:472 +#: awx/api/views.py:472 #, python-format msgid "Unknown period \"%s\"" msgstr "" -#: api/views.py:486 +#: awx/api/views.py:486 msgid "Schedules" msgstr "" -#: api/views.py:505 +#: awx/api/views.py:505 msgid "Schedule Jobs List" msgstr "" -#: api/views.py:715 +#: awx/api/views.py:715 msgid "Your Tower license only permits a single organization to exist." msgstr "" -#: api/views.py:940 api/views.py:1299 +#: awx/api/views.py:940 awx/api/views.py:1299 msgid "Role 'id' field is missing." msgstr "" -#: api/views.py:946 api/views.py:4081 +#: awx/api/views.py:946 awx/api/views.py:4086 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "" -#: api/views.py:950 api/views.py:4095 +#: awx/api/views.py:950 awx/api/views.py:4100 msgid "You cannot grant system-level permissions to a team." msgstr "" -#: api/views.py:957 api/views.py:4087 +#: awx/api/views.py:957 awx/api/views.py:4092 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" msgstr "" -#: api/views.py:1047 +#: awx/api/views.py:1047 msgid "Cannot delete project." msgstr "" -#: api/views.py:1076 +#: awx/api/views.py:1076 msgid "Project Schedules" msgstr "" -#: api/views.py:1180 api/views.py:2270 api/views.py:3276 +#: awx/api/views.py:1180 awx/api/views.py:2271 awx/api/views.py:3284 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" -#: api/views.py:1257 +#: awx/api/views.py:1257 msgid "Me" msgstr "" -#: api/views.py:1303 api/views.py:4036 +#: awx/api/views.py:1303 awx/api/views.py:4041 msgid "You may not perform any action with your own admin_role." msgstr "" -#: api/views.py:1309 api/views.py:4040 +#: awx/api/views.py:1309 awx/api/views.py:4045 msgid "You may not change the membership of a users admin_role" msgstr "" -#: api/views.py:1314 api/views.py:4045 +#: awx/api/views.py:1314 awx/api/views.py:4050 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" msgstr "" -#: api/views.py:1318 api/views.py:4049 +#: awx/api/views.py:1318 awx/api/views.py:4054 msgid "You cannot grant private credential access to another user" msgstr "" -#: api/views.py:1416 +#: awx/api/views.py:1416 #, python-format msgid "Cannot change %s." msgstr "" -#: api/views.py:1422 +#: awx/api/views.py:1422 msgid "Cannot delete user." msgstr "" -#: api/views.py:1570 +#: awx/api/views.py:1570 msgid "Cannot delete inventory script." msgstr "" -#: api/views.py:1805 +#: awx/api/views.py:1806 msgid "Fact not found." msgstr "" -#: api/views.py:2125 +#: awx/api/views.py:2126 msgid "Inventory Source List" msgstr "" -#: api/views.py:2153 +#: awx/api/views.py:2154 msgid "Cannot delete inventory source." msgstr "" -#: api/views.py:2161 +#: awx/api/views.py:2162 msgid "Inventory Source Schedules" msgstr "" -#: api/views.py:2191 +#: awx/api/views.py:2192 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -#: api/views.py:2402 +#: awx/api/views.py:2403 msgid "Job Template Schedules" msgstr "" -#: api/views.py:2422 api/views.py:2438 +#: awx/api/views.py:2423 awx/api/views.py:2439 msgid "Your license does not allow adding surveys." msgstr "" -#: api/views.py:2445 +#: awx/api/views.py:2446 msgid "'name' missing from survey spec." msgstr "" -#: api/views.py:2447 +#: awx/api/views.py:2448 msgid "'description' missing from survey spec." msgstr "" -#: api/views.py:2449 +#: awx/api/views.py:2450 msgid "'spec' missing from survey spec." msgstr "" -#: api/views.py:2451 +#: awx/api/views.py:2452 msgid "'spec' must be a list of items." msgstr "" -#: api/views.py:2453 +#: awx/api/views.py:2454 msgid "'spec' doesn't contain any items." msgstr "" -#: api/views.py:2459 +#: awx/api/views.py:2460 #, python-format msgid "Survey question %s is not a json object." msgstr "" -#: api/views.py:2461 +#: awx/api/views.py:2462 #, python-format msgid "'type' missing from survey question %s." msgstr "" -#: api/views.py:2463 +#: awx/api/views.py:2464 #, python-format msgid "'question_name' missing from survey question %s." msgstr "" -#: api/views.py:2465 +#: awx/api/views.py:2466 #, python-format msgid "'variable' missing from survey question %s." msgstr "" -#: api/views.py:2467 +#: awx/api/views.py:2468 #, python-format msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." msgstr "" -#: api/views.py:2472 +#: awx/api/views.py:2473 #, python-format msgid "'required' missing from survey question %s." msgstr "" -#: api/views.py:2683 +#: awx/api/views.py:2684 msgid "No matching host could be found!" msgstr "" -#: api/views.py:2686 +#: awx/api/views.py:2687 msgid "Multiple hosts matched the request!" msgstr "" -#: api/views.py:2691 +#: awx/api/views.py:2692 msgid "Cannot start automatically, user input required!" msgstr "" -#: api/views.py:2698 +#: awx/api/views.py:2699 msgid "Host callback job already pending." msgstr "" -#: api/views.py:2711 +#: awx/api/views.py:2712 msgid "Error starting job!" msgstr "" -#: api/views.py:3040 +#: awx/api/views.py:3041 msgid "Workflow Job Template Schedules" msgstr "" -#: api/views.py:3175 api/views.py:3714 +#: awx/api/views.py:3183 awx/api/views.py:3719 msgid "Superuser privileges needed." msgstr "" -#: api/views.py:3207 +#: awx/api/views.py:3215 msgid "System Job Template Schedules" msgstr "" -#: api/views.py:3399 +#: awx/api/views.py:3407 msgid "Job Host Summaries List" msgstr "" -#: api/views.py:3441 +#: awx/api/views.py:3449 msgid "Job Event Children List" msgstr "" -#: api/views.py:3450 +#: awx/api/views.py:3458 msgid "Job Event Hosts List" msgstr "" -#: api/views.py:3459 +#: awx/api/views.py:3467 msgid "Job Events List" msgstr "" -#: api/views.py:3668 +#: awx/api/views.py:3673 msgid "Ad Hoc Command Events List" msgstr "" -#: api/views.py:3862 +#: awx/api/views.py:3867 #, python-format msgid "Error generating stdout download file: %s" msgstr "" -#: api/views.py:3907 +#: awx/api/views.py:3912 msgid "Delete not allowed while there are pending notifications" msgstr "" -#: api/views.py:3914 +#: awx/api/views.py:3919 msgid "Notification Template Test" msgstr "" -#: api/views.py:4030 +#: awx/api/views.py:4035 msgid "User 'id' field is missing." msgstr "" -#: api/views.py:4073 +#: awx/api/views.py:4078 msgid "Team 'id' field is missing." msgstr "" -#: conf/conf.py:20 +#: awx/conf/conf.py:20 msgid "Bud Frogs" msgstr "" -#: conf/conf.py:21 +#: awx/conf/conf.py:21 msgid "Bunny" msgstr "" -#: conf/conf.py:22 +#: awx/conf/conf.py:22 msgid "Cheese" msgstr "" -#: conf/conf.py:23 +#: awx/conf/conf.py:23 msgid "Daemon" msgstr "" -#: conf/conf.py:24 +#: awx/conf/conf.py:24 msgid "Default Cow" msgstr "" -#: conf/conf.py:25 +#: awx/conf/conf.py:25 msgid "Dragon" msgstr "" -#: conf/conf.py:26 +#: awx/conf/conf.py:26 msgid "Elephant in Snake" msgstr "" -#: conf/conf.py:27 +#: awx/conf/conf.py:27 msgid "Elephant" msgstr "" -#: conf/conf.py:28 +#: awx/conf/conf.py:28 msgid "Eyes" msgstr "" -#: conf/conf.py:29 +#: awx/conf/conf.py:29 msgid "Hello Kitty" msgstr "" -#: conf/conf.py:30 +#: awx/conf/conf.py:30 msgid "Kitty" msgstr "" -#: conf/conf.py:31 +#: awx/conf/conf.py:31 msgid "Luke Koala" msgstr "" -#: conf/conf.py:32 +#: awx/conf/conf.py:32 msgid "Meow" msgstr "" -#: conf/conf.py:33 +#: awx/conf/conf.py:33 msgid "Milk" msgstr "" -#: conf/conf.py:34 +#: awx/conf/conf.py:34 msgid "Moofasa" msgstr "" -#: conf/conf.py:35 +#: awx/conf/conf.py:35 msgid "Moose" msgstr "" -#: conf/conf.py:36 +#: awx/conf/conf.py:36 msgid "Ren" msgstr "" -#: conf/conf.py:37 +#: awx/conf/conf.py:37 msgid "Sheep" msgstr "" -#: conf/conf.py:38 +#: awx/conf/conf.py:38 msgid "Small Cow" msgstr "" -#: conf/conf.py:39 +#: awx/conf/conf.py:39 msgid "Stegosaurus" msgstr "" -#: conf/conf.py:40 +#: awx/conf/conf.py:40 msgid "Stimpy" msgstr "" -#: conf/conf.py:41 +#: awx/conf/conf.py:41 msgid "Super Milker" msgstr "" -#: conf/conf.py:42 +#: awx/conf/conf.py:42 msgid "Three Eyes" msgstr "" -#: conf/conf.py:43 +#: awx/conf/conf.py:43 msgid "Turkey" msgstr "" -#: conf/conf.py:44 +#: awx/conf/conf.py:44 msgid "Turtle" msgstr "" -#: conf/conf.py:45 +#: awx/conf/conf.py:45 msgid "Tux" msgstr "" -#: conf/conf.py:46 +#: awx/conf/conf.py:46 msgid "Udder" msgstr "" -#: conf/conf.py:47 +#: awx/conf/conf.py:47 msgid "Vader Koala" msgstr "" -#: conf/conf.py:48 +#: awx/conf/conf.py:48 msgid "Vader" msgstr "" -#: conf/conf.py:49 +#: awx/conf/conf.py:49 msgid "WWW" msgstr "" -#: conf/conf.py:52 +#: awx/conf/conf.py:52 msgid "Cow Selection" msgstr "" -#: conf/conf.py:53 +#: awx/conf/conf.py:53 msgid "Select which cow to use with cowsay when running jobs." msgstr "" -#: conf/conf.py:54 conf/conf.py:75 +#: awx/conf/conf.py:54 awx/conf/conf.py:75 msgid "Cows" msgstr "" -#: conf/conf.py:73 +#: awx/conf/conf.py:73 msgid "Example Read-Only Setting" msgstr "" -#: conf/conf.py:74 +#: awx/conf/conf.py:74 msgid "Example setting that cannot be changed." msgstr "" -#: conf/conf.py:93 +#: awx/conf/conf.py:93 msgid "Example Setting" msgstr "" -#: conf/conf.py:94 +#: awx/conf/conf.py:94 msgid "Example setting which can be different for each user." msgstr "" -#: conf/conf.py:95 conf/registry.py:67 conf/views.py:46 +#: awx/conf/conf.py:95 awx/conf/registry.py:67 awx/conf/views.py:46 msgid "User" msgstr "" -#: conf/fields.py:38 +#: awx/conf/fields.py:38 msgid "Enter a valid URL" msgstr "" -#: conf/license.py:19 +#: awx/conf/license.py:19 msgid "Your Tower license does not allow that." msgstr "" -#: conf/management/commands/migrate_to_database_settings.py:41 +#: awx/conf/management/commands/migrate_to_database_settings.py:41 msgid "Only show which settings would be commented/migrated." msgstr "" -#: conf/management/commands/migrate_to_database_settings.py:48 +#: awx/conf/management/commands/migrate_to_database_settings.py:48 msgid "Skip over settings that would raise an error when commenting/migrating." msgstr "" -#: conf/management/commands/migrate_to_database_settings.py:55 +#: awx/conf/management/commands/migrate_to_database_settings.py:55 msgid "Skip commenting out settings in files." msgstr "" -#: conf/management/commands/migrate_to_database_settings.py:61 +#: awx/conf/management/commands/migrate_to_database_settings.py:61 msgid "Backup existing settings files with this suffix." msgstr "" -#: conf/registry.py:55 +#: awx/conf/registry.py:55 msgid "All" msgstr "" -#: conf/registry.py:56 +#: awx/conf/registry.py:56 msgid "Changed" msgstr "" -#: conf/registry.py:68 +#: awx/conf/registry.py:68 msgid "User-Defaults" msgstr "" -#: conf/views.py:38 +#: awx/conf/views.py:38 msgid "Setting Categories" msgstr "" -#: conf/views.py:61 +#: awx/conf/views.py:61 msgid "Setting Detail" msgstr "" -#: main/access.py:255 +#: awx/main/access.py:255 #, python-format msgid "Bad data found in related field %s." msgstr "" -#: main/access.py:296 +#: awx/main/access.py:296 msgid "License is missing." msgstr "" -#: main/access.py:298 +#: awx/main/access.py:298 msgid "License has expired." msgstr "" -#: main/access.py:303 +#: awx/main/access.py:306 #, python-format msgid "License count of %s instances has been reached." msgstr "" -#: main/access.py:305 +#: awx/main/access.py:308 #, python-format msgid "License count of %s instances has been exceeded." msgstr "" -#: main/access.py:307 +#: awx/main/access.py:310 msgid "Host count exceeds available instances." msgstr "" -#: main/access.py:311 +#: awx/main/access.py:314 #, python-format msgid "Feature %s is not enabled in the active license." msgstr "" -#: main/access.py:313 +#: awx/main/access.py:316 msgid "Features not found in active license." msgstr "" -#: main/access.py:511 main/access.py:578 main/access.py:698 main/access.py:961 -#: main/access.py:1200 main/access.py:1597 +#: 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 msgid "Resource is being used by running jobs" msgstr "" -#: main/access.py:622 +#: awx/main/access.py:625 msgid "Unable to change inventory on a host." msgstr "" -#: main/access.py:634 main/access.py:679 +#: awx/main/access.py:642 awx/main/access.py:687 msgid "Cannot associate two items from different inventories." msgstr "" -#: main/access.py:667 +#: awx/main/access.py:675 msgid "Unable to change inventory on a group." msgstr "" -#: main/access.py:881 +#: awx/main/access.py:889 msgid "Unable to change organization on a team." msgstr "" -#: main/access.py:894 +#: awx/main/access.py:902 msgid "The {} role cannot be assigned to a team" msgstr "" -#: main/access.py:896 +#: awx/main/access.py:904 msgid "The admin_role for a User cannot be assigned to a team" msgstr "" -#: main/access.py:1670 +#: awx/main/access.py:1678 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." msgstr "" -#: main/apps.py:9 +#: awx/main/apps.py:9 msgid "Main" msgstr "" -#: main/conf.py:17 +#: awx/main/conf.py:17 msgid "Enable Activity Stream" msgstr "" -#: main/conf.py:18 +#: awx/main/conf.py:18 msgid "Enable capturing activity for the Tower activity stream." msgstr "" -#: main/conf.py:19 main/conf.py:29 main/conf.py:39 main/conf.py:48 -#: main/conf.py:60 main/conf.py:78 main/conf.py:103 +#: 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 "" -#: main/conf.py:27 +#: awx/main/conf.py:27 msgid "Enable Activity Stream for Inventory Sync" msgstr "" -#: main/conf.py:28 +#: awx/main/conf.py:28 msgid "" "Enable capturing activity for the Tower activity stream when running " "inventory sync." msgstr "" -#: main/conf.py:37 +#: awx/main/conf.py:37 msgid "All Users Visible to Organization Admins" msgstr "" -#: main/conf.py:38 +#: awx/main/conf.py:38 msgid "" "Controls whether any Organization Admin can view all users, even those not " "associated with their Organization." msgstr "" -#: main/conf.py:46 +#: awx/main/conf.py:46 msgid "Enable Tower Administrator Alerts" msgstr "" -#: main/conf.py:47 +#: awx/main/conf.py:47 msgid "" "Allow Tower to email Admin users for system events that may require " "attention." msgstr "" -#: main/conf.py:57 +#: awx/main/conf.py:57 msgid "Base URL of the Tower host" msgstr "" -#: main/conf.py:58 +#: awx/main/conf.py:58 msgid "" "This setting is used by services like notifications to render a valid url to " "the Tower host." msgstr "" -#: main/conf.py:67 +#: awx/main/conf.py:67 msgid "Remote Host Headers" msgstr "" -#: main/conf.py:68 +#: 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 " @@ -1054,190 +1055,192 @@ msgid "" "REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']" msgstr "" -#: main/conf.py:99 +#: awx/main/conf.py:99 msgid "Tower License" msgstr "" -#: main/conf.py:100 +#: 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 "" -#: main/conf.py:110 +#: awx/main/conf.py:110 msgid "Ansible Modules Allowed for Ad Hoc Jobs" msgstr "" -#: main/conf.py:111 +#: awx/main/conf.py:111 msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "" -#: main/conf.py:112 main/conf.py:121 main/conf.py:130 main/conf.py:140 -#: main/conf.py:150 main/conf.py:160 main/conf.py:170 main/conf.py:180 -#: main/conf.py:190 main/conf.py:202 main/conf.py:214 main/conf.py:226 +#: 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 "" -#: main/conf.py:119 +#: awx/main/conf.py:119 msgid "Enable job isolation" msgstr "" -#: main/conf.py:120 +#: awx/main/conf.py:120 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." msgstr "" -#: main/conf.py:128 +#: awx/main/conf.py:128 msgid "Job isolation execution path" msgstr "" -#: main/conf.py:129 +#: awx/main/conf.py:129 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" -#: main/conf.py:138 +#: awx/main/conf.py:138 msgid "Paths to hide from isolated jobs" msgstr "" -#: main/conf.py:139 +#: awx/main/conf.py:139 msgid "Additional paths to hide from isolated processes." msgstr "" -#: main/conf.py:148 +#: awx/main/conf.py:148 msgid "Paths to expose to isolated jobs" msgstr "" -#: main/conf.py:149 +#: awx/main/conf.py:149 msgid "" "Whitelist of paths that would otherwise be hidden to expose to isolated jobs." msgstr "" -#: main/conf.py:158 +#: awx/main/conf.py:158 msgid "Standard Output Maximum Display Size" msgstr "" -#: main/conf.py:159 +#: awx/main/conf.py:159 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -#: main/conf.py:168 +#: awx/main/conf.py:168 msgid "Job Event Standard Output Maximum Display Size" msgstr "" -#: main/conf.py:169 +#: 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 "" -#: main/conf.py:178 +#: awx/main/conf.py:178 msgid "Maximum Scheduled Jobs" msgstr "" -#: main/conf.py:179 +#: 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 "" -#: main/conf.py:188 +#: awx/main/conf.py:188 msgid "Ansible Callback Plugins" msgstr "" -#: main/conf.py:189 +#: awx/main/conf.py:189 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." msgstr "" -#: main/conf.py:199 +#: awx/main/conf.py:199 msgid "Default Job Timeout" msgstr "" -#: main/conf.py:200 +#: 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 "" -#: main/conf.py:211 +#: awx/main/conf.py:211 msgid "Default Inventory Update Timeout" msgstr "" -#: main/conf.py:212 +#: 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 "" -#: main/conf.py:223 +#: awx/main/conf.py:223 msgid "Default Project Update Timeout" msgstr "" -#: main/conf.py:224 +#: 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 "" -#: main/conf.py:234 +#: awx/main/conf.py:234 msgid "Logging Aggregator" msgstr "" -#: main/conf.py:235 +#: awx/main/conf.py:235 msgid "Hostname/IP where external logs will be sent to." msgstr "" -#: main/conf.py:236 main/conf.py:245 main/conf.py:255 main/conf.py:264 -#: main/conf.py:274 main/conf.py:288 main/conf.py:300 main/conf.py:309 +#: 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 msgid "Logging" msgstr "" -#: main/conf.py:243 +#: awx/main/conf.py:243 msgid "Logging Aggregator Port" msgstr "" -#: main/conf.py:244 +#: awx/main/conf.py:244 msgid "Port on Logging Aggregator to send logs to (if required)." msgstr "" -#: main/conf.py:253 +#: awx/main/conf.py:253 msgid "Logging Aggregator Type" msgstr "" -#: main/conf.py:254 +#: awx/main/conf.py:254 msgid "Format messages for the chosen log aggregator." msgstr "" -#: main/conf.py:262 +#: awx/main/conf.py:262 msgid "Logging Aggregator Username" msgstr "" -#: main/conf.py:263 +#: awx/main/conf.py:263 msgid "Username for external log aggregator (if required)." msgstr "" -#: main/conf.py:272 +#: awx/main/conf.py:272 msgid "Logging Aggregator Password/Token" msgstr "" -#: main/conf.py:273 +#: awx/main/conf.py:273 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -#: main/conf.py:281 +#: awx/main/conf.py:281 msgid "Loggers to send data to the log aggregator from" msgstr "" -#: main/conf.py:282 +#: awx/main/conf.py:282 msgid "" "List of loggers that will send HTTP logs to the collector, these can include " "any or all of: \n" @@ -1247,11 +1250,11 @@ msgid "" "system_tracking - facts gathered from scan jobs." msgstr "" -#: main/conf.py:295 +#: awx/main/conf.py:295 msgid "Log System Tracking Facts Individually" msgstr "" -#: main/conf.py:296 +#: awx/main/conf.py:296 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. " @@ -1259,1435 +1262,1527 @@ msgid "" "efficiency in fact processing." msgstr "" -#: main/conf.py:307 +#: awx/main/conf.py:307 msgid "Enable External Logging" msgstr "" -#: main/conf.py:308 +#: awx/main/conf.py:308 msgid "Enable sending logs to external log aggregator." msgstr "" -#: main/models/activity_stream.py:22 +#: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "" -#: main/models/activity_stream.py:23 +#: awx/main/models/activity_stream.py:23 msgid "Entity Updated" msgstr "" -#: main/models/activity_stream.py:24 +#: awx/main/models/activity_stream.py:24 msgid "Entity Deleted" msgstr "" -#: main/models/activity_stream.py:25 +#: awx/main/models/activity_stream.py:25 msgid "Entity Associated with another Entity" msgstr "" -#: main/models/activity_stream.py:26 +#: awx/main/models/activity_stream.py:26 msgid "Entity was Disassociated with another Entity" msgstr "" -#: main/models/ad_hoc_commands.py:96 +#: awx/main/models/ad_hoc_commands.py:96 msgid "No valid inventory." msgstr "" -#: main/models/ad_hoc_commands.py:103 main/models/jobs.py:161 +#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:161 msgid "You must provide a machine / SSH credential." msgstr "" -#: main/models/ad_hoc_commands.py:114 main/models/ad_hoc_commands.py:122 +#: awx/main/models/ad_hoc_commands.py:114 +#: awx/main/models/ad_hoc_commands.py:122 msgid "Invalid type for ad hoc command" msgstr "" -#: main/models/ad_hoc_commands.py:117 +#: awx/main/models/ad_hoc_commands.py:117 msgid "Unsupported module for ad hoc commands." msgstr "" -#: main/models/ad_hoc_commands.py:125 +#: awx/main/models/ad_hoc_commands.py:125 #, python-format msgid "No argument passed to %s module." msgstr "" -#: main/models/ad_hoc_commands.py:222 main/models/jobs.py:763 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:763 msgid "Host Failed" msgstr "" -#: main/models/ad_hoc_commands.py:223 main/models/jobs.py:764 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:764 msgid "Host OK" msgstr "" -#: main/models/ad_hoc_commands.py:224 main/models/jobs.py:767 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:767 msgid "Host Unreachable" msgstr "" -#: main/models/ad_hoc_commands.py:229 main/models/jobs.py:766 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:766 msgid "Host Skipped" msgstr "" -#: main/models/ad_hoc_commands.py:239 main/models/jobs.py:794 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:794 msgid "Debug" msgstr "" -#: main/models/ad_hoc_commands.py:240 main/models/jobs.py:795 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:795 msgid "Verbose" msgstr "" -#: main/models/ad_hoc_commands.py:241 main/models/jobs.py:796 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:796 msgid "Deprecated" msgstr "" -#: main/models/ad_hoc_commands.py:242 main/models/jobs.py:797 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:797 msgid "Warning" msgstr "" -#: main/models/ad_hoc_commands.py:243 main/models/jobs.py:798 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:798 msgid "System Warning" msgstr "" -#: main/models/ad_hoc_commands.py:244 main/models/jobs.py:799 -#: main/models/unified_jobs.py:64 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:799 +#: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "" -#: main/models/base.py:45 main/models/base.py:51 main/models/base.py:56 +#: awx/main/models/base.py:45 awx/main/models/base.py:51 +#: awx/main/models/base.py:56 msgid "Run" msgstr "" -#: main/models/base.py:46 main/models/base.py:52 main/models/base.py:57 +#: awx/main/models/base.py:46 awx/main/models/base.py:52 +#: awx/main/models/base.py:57 msgid "Check" msgstr "" -#: main/models/base.py:47 +#: awx/main/models/base.py:47 msgid "Scan" msgstr "" -#: main/models/base.py:61 +#: awx/main/models/base.py:61 msgid "Read Inventory" msgstr "" -#: main/models/base.py:62 +#: awx/main/models/base.py:62 msgid "Edit Inventory" msgstr "" -#: main/models/base.py:63 +#: awx/main/models/base.py:63 msgid "Administrate Inventory" msgstr "" -#: main/models/base.py:64 +#: awx/main/models/base.py:64 msgid "Deploy To Inventory" msgstr "" -#: main/models/base.py:65 +#: awx/main/models/base.py:65 msgid "Deploy To Inventory (Dry Run)" msgstr "" -#: main/models/base.py:66 +#: awx/main/models/base.py:66 msgid "Scan an Inventory" msgstr "" -#: main/models/base.py:67 +#: awx/main/models/base.py:67 msgid "Create a Job Template" msgstr "" -#: main/models/credential.py:33 +#: awx/main/models/credential.py:33 msgid "Machine" msgstr "" -#: main/models/credential.py:34 +#: awx/main/models/credential.py:34 msgid "Network" msgstr "" -#: main/models/credential.py:35 +#: awx/main/models/credential.py:35 msgid "Source Control" msgstr "" -#: main/models/credential.py:36 +#: awx/main/models/credential.py:36 msgid "Amazon Web Services" msgstr "" -#: main/models/credential.py:37 +#: awx/main/models/credential.py:37 msgid "Rackspace" msgstr "" -#: main/models/credential.py:38 main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 msgid "VMware vCenter" msgstr "" -#: main/models/credential.py:39 main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 msgid "Red Hat Satellite 6" msgstr "" -#: main/models/credential.py:40 main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 msgid "Red Hat CloudForms" msgstr "" -#: main/models/credential.py:41 main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 msgid "Google Compute Engine" msgstr "" -#: main/models/credential.py:42 main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 msgid "Microsoft Azure Classic (deprecated)" msgstr "" -#: main/models/credential.py:43 main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 msgid "Microsoft Azure Resource Manager" msgstr "" -#: main/models/credential.py:44 main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 msgid "OpenStack" msgstr "" -#: main/models/credential.py:48 +#: awx/main/models/credential.py:48 msgid "None" msgstr "" -#: main/models/credential.py:49 +#: awx/main/models/credential.py:49 msgid "Sudo" msgstr "" -#: main/models/credential.py:50 +#: awx/main/models/credential.py:50 msgid "Su" msgstr "" -#: main/models/credential.py:51 +#: awx/main/models/credential.py:51 msgid "Pbrun" msgstr "" -#: main/models/credential.py:52 +#: awx/main/models/credential.py:52 msgid "Pfexec" msgstr "" -#: main/models/credential.py:53 +#: awx/main/models/credential.py:53 msgid "DZDO" msgstr "" -#: main/models/credential.py:54 +#: awx/main/models/credential.py:54 msgid "Pmrun" msgstr "" -#: main/models/credential.py:103 +#: awx/main/models/credential.py:103 msgid "Host" msgstr "" -#: main/models/credential.py:104 +#: awx/main/models/credential.py:104 msgid "The hostname or IP address to use." msgstr "" -#: main/models/credential.py:110 +#: awx/main/models/credential.py:110 msgid "Username" msgstr "" -#: main/models/credential.py:111 +#: awx/main/models/credential.py:111 msgid "Username for this credential." msgstr "" -#: main/models/credential.py:117 +#: awx/main/models/credential.py:117 msgid "Password" msgstr "" -#: main/models/credential.py:118 +#: awx/main/models/credential.py:118 msgid "" "Password for this credential (or \"ASK\" to prompt the user for machine " "credentials)." msgstr "" -#: main/models/credential.py:125 +#: awx/main/models/credential.py:125 msgid "Security Token" msgstr "" -#: main/models/credential.py:126 +#: awx/main/models/credential.py:126 msgid "Security Token for this credential" msgstr "" -#: main/models/credential.py:132 +#: awx/main/models/credential.py:132 msgid "Project" msgstr "" -#: main/models/credential.py:133 +#: awx/main/models/credential.py:133 msgid "The identifier for the project." msgstr "" -#: main/models/credential.py:139 +#: awx/main/models/credential.py:139 msgid "Domain" msgstr "" -#: main/models/credential.py:140 +#: awx/main/models/credential.py:140 msgid "The identifier for the domain." msgstr "" -#: main/models/credential.py:145 +#: awx/main/models/credential.py:145 msgid "SSH private key" msgstr "" -#: main/models/credential.py:146 +#: awx/main/models/credential.py:146 msgid "RSA or DSA private key to be used instead of password." msgstr "" -#: main/models/credential.py:152 +#: awx/main/models/credential.py:152 msgid "SSH key unlock" msgstr "" -#: main/models/credential.py:153 +#: 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 "" -#: main/models/credential.py:161 +#: awx/main/models/credential.py:161 msgid "Privilege escalation method." msgstr "" -#: main/models/credential.py:167 +#: awx/main/models/credential.py:167 msgid "Privilege escalation username." msgstr "" -#: main/models/credential.py:173 +#: awx/main/models/credential.py:173 msgid "Password for privilege escalation method." msgstr "" -#: main/models/credential.py:179 +#: awx/main/models/credential.py:179 msgid "Vault password (or \"ASK\" to prompt the user)." msgstr "" -#: main/models/credential.py:183 +#: awx/main/models/credential.py:183 msgid "Whether to use the authorize mechanism." msgstr "" -#: main/models/credential.py:189 +#: awx/main/models/credential.py:189 msgid "Password used by the authorize mechanism." msgstr "" -#: main/models/credential.py:195 +#: awx/main/models/credential.py:195 msgid "Client Id or Application Id for the credential" msgstr "" -#: main/models/credential.py:201 +#: awx/main/models/credential.py:201 msgid "Secret Token for this credential" msgstr "" -#: main/models/credential.py:207 +#: awx/main/models/credential.py:207 msgid "Subscription identifier for this credential" msgstr "" -#: main/models/credential.py:213 +#: awx/main/models/credential.py:213 msgid "Tenant identifier for this credential" msgstr "" -#: main/models/credential.py:283 +#: awx/main/models/credential.py:283 msgid "Host required for VMware credential." msgstr "" -#: main/models/credential.py:285 +#: awx/main/models/credential.py:285 msgid "Host required for OpenStack credential." msgstr "" -#: main/models/credential.py:294 +#: awx/main/models/credential.py:294 msgid "Access key required for AWS credential." msgstr "" -#: main/models/credential.py:296 +#: awx/main/models/credential.py:296 msgid "Username required for Rackspace credential." msgstr "" -#: main/models/credential.py:299 +#: awx/main/models/credential.py:299 msgid "Username required for VMware credential." msgstr "" -#: main/models/credential.py:301 +#: awx/main/models/credential.py:301 msgid "Username required for OpenStack credential." msgstr "" -#: main/models/credential.py:307 +#: awx/main/models/credential.py:307 msgid "Secret key required for AWS credential." msgstr "" -#: main/models/credential.py:309 +#: awx/main/models/credential.py:309 msgid "API key required for Rackspace credential." msgstr "" -#: main/models/credential.py:311 +#: awx/main/models/credential.py:311 msgid "Password required for VMware credential." msgstr "" -#: main/models/credential.py:313 +#: awx/main/models/credential.py:313 msgid "Password or API key required for OpenStack credential." msgstr "" -#: main/models/credential.py:319 +#: awx/main/models/credential.py:319 msgid "Project name required for OpenStack credential." msgstr "" -#: main/models/credential.py:346 +#: awx/main/models/credential.py:346 msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" -#: main/models/credential.py:352 +#: awx/main/models/credential.py:352 msgid "Credential cannot be assigned to both a user and team." msgstr "" -#: main/models/fact.py:21 +#: awx/main/models/fact.py:21 msgid "Host for the facts that the fact scan captured." msgstr "" -#: main/models/fact.py:26 +#: awx/main/models/fact.py:26 msgid "Date and time of the corresponding fact scan gathering time." msgstr "" -#: main/models/fact.py:29 +#: awx/main/models/fact.py:29 msgid "" "Arbitrary JSON structure of module facts captured at timestamp for a single " "host." msgstr "" -#: main/models/inventory.py:45 +#: awx/main/models/inventory.py:45 msgid "inventories" msgstr "" -#: main/models/inventory.py:52 +#: awx/main/models/inventory.py:52 msgid "Organization containing this inventory." msgstr "" -#: main/models/inventory.py:58 +#: awx/main/models/inventory.py:58 msgid "Inventory variables in JSON or YAML format." msgstr "" -#: main/models/inventory.py:63 +#: awx/main/models/inventory.py:63 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" -#: main/models/inventory.py:68 +#: awx/main/models/inventory.py:68 msgid "Total number of hosts in this inventory." msgstr "" -#: main/models/inventory.py:73 +#: awx/main/models/inventory.py:73 msgid "Number of hosts in this inventory with active failures." msgstr "" -#: main/models/inventory.py:78 +#: awx/main/models/inventory.py:78 msgid "Total number of groups in this inventory." msgstr "" -#: main/models/inventory.py:83 +#: awx/main/models/inventory.py:83 msgid "Number of groups in this inventory with active failures." msgstr "" -#: main/models/inventory.py:88 +#: awx/main/models/inventory.py:88 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" -#: main/models/inventory.py:93 +#: awx/main/models/inventory.py:93 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" -#: main/models/inventory.py:98 +#: awx/main/models/inventory.py:98 msgid "Number of external inventory sources in this inventory with failures." msgstr "" -#: main/models/inventory.py:339 +#: awx/main/models/inventory.py:339 msgid "Is this host online and available for running jobs?" msgstr "" -#: main/models/inventory.py:345 +#: awx/main/models/inventory.py:345 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" -#: main/models/inventory.py:350 +#: awx/main/models/inventory.py:350 msgid "Host variables in JSON or YAML format." msgstr "" -#: main/models/inventory.py:372 +#: awx/main/models/inventory.py:372 msgid "Flag indicating whether the last job failed for this host." msgstr "" -#: main/models/inventory.py:377 +#: awx/main/models/inventory.py:377 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." msgstr "" -#: main/models/inventory.py:383 +#: awx/main/models/inventory.py:383 msgid "Inventory source(s) that created or modified this host." msgstr "" -#: main/models/inventory.py:474 +#: awx/main/models/inventory.py:474 msgid "Group variables in JSON or YAML format." msgstr "" -#: main/models/inventory.py:480 +#: awx/main/models/inventory.py:480 msgid "Hosts associated directly with this group." msgstr "" -#: main/models/inventory.py:485 +#: awx/main/models/inventory.py:485 msgid "Total number of hosts directly or indirectly in this group." msgstr "" -#: main/models/inventory.py:490 +#: awx/main/models/inventory.py:490 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" -#: main/models/inventory.py:495 +#: awx/main/models/inventory.py:495 msgid "Number of hosts in this group with active failures." msgstr "" -#: main/models/inventory.py:500 +#: awx/main/models/inventory.py:500 msgid "Total number of child groups contained within this group." msgstr "" -#: main/models/inventory.py:505 +#: awx/main/models/inventory.py:505 msgid "Number of child groups within this group that have active failures." msgstr "" -#: main/models/inventory.py:510 +#: awx/main/models/inventory.py:510 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." msgstr "" -#: main/models/inventory.py:516 +#: awx/main/models/inventory.py:516 msgid "Inventory source(s) that created or modified this group." msgstr "" -#: main/models/inventory.py:706 main/models/projects.py:42 -#: main/models/unified_jobs.py:402 +#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:402 msgid "Manual" msgstr "" -#: main/models/inventory.py:707 +#: awx/main/models/inventory.py:707 msgid "Local File, Directory or Script" msgstr "" -#: main/models/inventory.py:708 +#: awx/main/models/inventory.py:708 msgid "Rackspace Cloud Servers" msgstr "" -#: main/models/inventory.py:709 +#: awx/main/models/inventory.py:709 msgid "Amazon EC2" msgstr "" -#: main/models/inventory.py:717 +#: awx/main/models/inventory.py:717 msgid "Custom Script" msgstr "" -#: main/models/inventory.py:828 +#: awx/main/models/inventory.py:828 msgid "Inventory source variables in YAML or JSON format." msgstr "" -#: main/models/inventory.py:847 +#: 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 "" -#: main/models/inventory.py:853 +#: awx/main/models/inventory.py:853 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" -#: main/models/inventory.py:857 +#: awx/main/models/inventory.py:857 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" -#: main/models/inventory.py:861 +#: awx/main/models/inventory.py:861 msgid "Overwrite local variables from remote inventory source." msgstr "" -#: main/models/inventory.py:893 +#: awx/main/models/inventory.py:893 msgid "Availability Zone" msgstr "" -#: main/models/inventory.py:894 +#: awx/main/models/inventory.py:894 msgid "Image ID" msgstr "" -#: main/models/inventory.py:895 +#: awx/main/models/inventory.py:895 msgid "Instance ID" msgstr "" -#: main/models/inventory.py:896 +#: awx/main/models/inventory.py:896 msgid "Instance Type" msgstr "" -#: main/models/inventory.py:897 +#: awx/main/models/inventory.py:897 msgid "Key Name" msgstr "" -#: main/models/inventory.py:898 +#: awx/main/models/inventory.py:898 msgid "Region" msgstr "" -#: main/models/inventory.py:899 +#: awx/main/models/inventory.py:899 msgid "Security Group" msgstr "" -#: main/models/inventory.py:900 +#: awx/main/models/inventory.py:900 msgid "Tags" msgstr "" -#: main/models/inventory.py:901 +#: awx/main/models/inventory.py:901 msgid "VPC ID" msgstr "" -#: main/models/inventory.py:902 +#: awx/main/models/inventory.py:902 msgid "Tag None" msgstr "" -#: main/models/inventory.py:973 +#: awx/main/models/inventory.py:973 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -#: main/models/inventory.py:980 +#: awx/main/models/inventory.py:980 msgid "Credential is required for a cloud source." msgstr "" -#: main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1005 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "" -#: main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1030 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "" -#: main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1048 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "" -#: main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1195 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." msgstr "" -#: main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1290 msgid "Inventory script contents" msgstr "" -#: main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1295 msgid "Organization owning this inventory script" msgstr "" -#: main/models/jobs.py:169 +#: awx/main/models/jobs.py:169 msgid "You must provide a network credential." msgstr "" -#: main/models/jobs.py:177 +#: awx/main/models/jobs.py:177 msgid "" "Must provide a credential for a cloud provider, such as Amazon Web Services " "or Rackspace." msgstr "" -#: main/models/jobs.py:269 +#: awx/main/models/jobs.py:269 msgid "Job Template must provide 'inventory' or allow prompting for it." msgstr "" -#: main/models/jobs.py:273 +#: awx/main/models/jobs.py:273 msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -#: main/models/jobs.py:362 +#: awx/main/models/jobs.py:362 msgid "Cannot override job_type to or from a scan job." msgstr "" -#: main/models/jobs.py:365 +#: awx/main/models/jobs.py:365 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" -#: main/models/jobs.py:431 main/models/projects.py:243 +#: awx/main/models/jobs.py:431 awx/main/models/projects.py:243 msgid "SCM Revision" msgstr "" -#: main/models/jobs.py:432 +#: awx/main/models/jobs.py:432 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -#: main/models/jobs.py:440 +#: awx/main/models/jobs.py:440 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -#: main/models/jobs.py:662 +#: awx/main/models/jobs.py:662 msgid "job host summaries" msgstr "" -#: main/models/jobs.py:765 +#: awx/main/models/jobs.py:765 msgid "Host Failure" msgstr "" -#: main/models/jobs.py:768 main/models/jobs.py:782 +#: awx/main/models/jobs.py:768 awx/main/models/jobs.py:782 msgid "No Hosts Remaining" msgstr "" -#: main/models/jobs.py:769 +#: awx/main/models/jobs.py:769 msgid "Host Polling" msgstr "" -#: main/models/jobs.py:770 +#: awx/main/models/jobs.py:770 msgid "Host Async OK" msgstr "" -#: main/models/jobs.py:771 +#: awx/main/models/jobs.py:771 msgid "Host Async Failure" msgstr "" -#: main/models/jobs.py:772 +#: awx/main/models/jobs.py:772 msgid "Item OK" msgstr "" -#: main/models/jobs.py:773 +#: awx/main/models/jobs.py:773 msgid "Item Failed" msgstr "" -#: main/models/jobs.py:774 +#: awx/main/models/jobs.py:774 msgid "Item Skipped" msgstr "" -#: main/models/jobs.py:775 +#: awx/main/models/jobs.py:775 msgid "Host Retry" msgstr "" -#: main/models/jobs.py:777 +#: awx/main/models/jobs.py:777 msgid "File Difference" msgstr "" -#: main/models/jobs.py:778 +#: awx/main/models/jobs.py:778 msgid "Playbook Started" msgstr "" -#: main/models/jobs.py:779 +#: awx/main/models/jobs.py:779 msgid "Running Handlers" msgstr "" -#: main/models/jobs.py:780 +#: awx/main/models/jobs.py:780 msgid "Including File" msgstr "" -#: main/models/jobs.py:781 +#: awx/main/models/jobs.py:781 msgid "No Hosts Matched" msgstr "" -#: main/models/jobs.py:783 +#: awx/main/models/jobs.py:783 msgid "Task Started" msgstr "" -#: main/models/jobs.py:785 +#: awx/main/models/jobs.py:785 msgid "Variables Prompted" msgstr "" -#: main/models/jobs.py:786 +#: awx/main/models/jobs.py:786 msgid "Gathering Facts" msgstr "" -#: main/models/jobs.py:787 +#: awx/main/models/jobs.py:787 msgid "internal: on Import for Host" msgstr "" -#: main/models/jobs.py:788 +#: awx/main/models/jobs.py:788 msgid "internal: on Not Import for Host" msgstr "" -#: main/models/jobs.py:789 +#: awx/main/models/jobs.py:789 msgid "Play Started" msgstr "" -#: main/models/jobs.py:790 +#: awx/main/models/jobs.py:790 msgid "Playbook Complete" msgstr "" -#: main/models/jobs.py:1200 +#: awx/main/models/jobs.py:1200 msgid "Remove jobs older than a certain number of days" msgstr "" -#: main/models/jobs.py:1201 +#: awx/main/models/jobs.py:1201 msgid "Remove activity stream entries older than a certain number of days" msgstr "" -#: main/models/jobs.py:1202 +#: awx/main/models/jobs.py:1202 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" -#: main/models/label.py:29 +#: awx/main/models/label.py:29 msgid "Organization this label belongs to." msgstr "" -#: main/models/notifications.py:31 +#: awx/main/models/notifications.py:31 msgid "Email" msgstr "" -#: main/models/notifications.py:32 +#: awx/main/models/notifications.py:32 msgid "Slack" msgstr "" -#: main/models/notifications.py:33 +#: awx/main/models/notifications.py:33 msgid "Twilio" msgstr "" -#: main/models/notifications.py:34 +#: awx/main/models/notifications.py:34 msgid "Pagerduty" msgstr "" -#: main/models/notifications.py:35 +#: awx/main/models/notifications.py:35 msgid "HipChat" msgstr "" -#: main/models/notifications.py:36 +#: awx/main/models/notifications.py:36 msgid "Webhook" msgstr "" -#: main/models/notifications.py:37 +#: awx/main/models/notifications.py:37 msgid "IRC" msgstr "" -#: main/models/notifications.py:127 main/models/unified_jobs.py:59 +#: awx/main/models/notifications.py:127 awx/main/models/unified_jobs.py:59 msgid "Pending" msgstr "" -#: main/models/notifications.py:128 main/models/unified_jobs.py:62 +#: awx/main/models/notifications.py:128 awx/main/models/unified_jobs.py:62 msgid "Successful" msgstr "" -#: main/models/notifications.py:129 main/models/unified_jobs.py:63 +#: awx/main/models/notifications.py:129 awx/main/models/unified_jobs.py:63 msgid "Failed" msgstr "" -#: main/models/organization.py:157 +#: awx/main/models/organization.py:157 msgid "Execute Commands on the Inventory" msgstr "" -#: main/models/organization.py:211 +#: awx/main/models/organization.py:211 msgid "Token not invalidated" msgstr "" -#: main/models/organization.py:212 +#: awx/main/models/organization.py:212 msgid "Token is expired" msgstr "" -#: main/models/organization.py:213 +#: awx/main/models/organization.py:213 msgid "The maximum number of allowed sessions for this user has been exceeded." msgstr "" -#: main/models/organization.py:216 +#: awx/main/models/organization.py:216 msgid "Invalid token" msgstr "" -#: main/models/organization.py:233 +#: awx/main/models/organization.py:233 msgid "Reason the auth token was invalidated." msgstr "" -#: main/models/organization.py:272 +#: awx/main/models/organization.py:272 msgid "Invalid reason specified" msgstr "" -#: main/models/projects.py:43 +#: awx/main/models/projects.py:43 msgid "Git" msgstr "" -#: main/models/projects.py:44 +#: awx/main/models/projects.py:44 msgid "Mercurial" msgstr "" -#: main/models/projects.py:45 +#: awx/main/models/projects.py:45 msgid "Subversion" msgstr "" -#: main/models/projects.py:71 +#: awx/main/models/projects.py:71 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." msgstr "" -#: main/models/projects.py:80 +#: awx/main/models/projects.py:80 msgid "SCM Type" msgstr "" -#: main/models/projects.py:81 +#: awx/main/models/projects.py:81 msgid "Specifies the source control system used to store the project." msgstr "" -#: main/models/projects.py:87 +#: awx/main/models/projects.py:87 msgid "SCM URL" msgstr "" -#: main/models/projects.py:88 +#: awx/main/models/projects.py:88 msgid "The location where the project is stored." msgstr "" -#: main/models/projects.py:94 +#: awx/main/models/projects.py:94 msgid "SCM Branch" msgstr "" -#: main/models/projects.py:95 +#: awx/main/models/projects.py:95 msgid "Specific branch, tag or commit to checkout." msgstr "" -#: main/models/projects.py:99 +#: awx/main/models/projects.py:99 msgid "Discard any local changes before syncing the project." msgstr "" -#: main/models/projects.py:103 +#: awx/main/models/projects.py:103 msgid "Delete the project before syncing." msgstr "" -#: main/models/projects.py:116 +#: awx/main/models/projects.py:116 msgid "The amount of time to run before the task is canceled." msgstr "" -#: main/models/projects.py:130 +#: awx/main/models/projects.py:130 msgid "Invalid SCM URL." msgstr "" -#: main/models/projects.py:133 +#: awx/main/models/projects.py:133 msgid "SCM URL is required." msgstr "" -#: main/models/projects.py:142 +#: awx/main/models/projects.py:142 msgid "Credential kind must be 'scm'." msgstr "" -#: main/models/projects.py:157 +#: awx/main/models/projects.py:157 msgid "Invalid credential." msgstr "" -#: main/models/projects.py:229 +#: awx/main/models/projects.py:229 msgid "Update the project when a job is launched that uses the project." msgstr "" -#: main/models/projects.py:234 +#: 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 "" -#: main/models/projects.py:244 +#: awx/main/models/projects.py:244 msgid "The last revision fetched by a project update" msgstr "" -#: main/models/projects.py:251 +#: awx/main/models/projects.py:251 msgid "Playbook Files" msgstr "" -#: main/models/projects.py:252 +#: awx/main/models/projects.py:252 msgid "List of playbooks found in the project" msgstr "" -#: main/models/rbac.py:122 +#: awx/main/models/rbac.py:37 +msgid "System Administrator" +msgstr "" + +#: awx/main/models/rbac.py:38 +msgid "System Auditor" +msgstr "" + +#: awx/main/models/rbac.py:39 +msgid "Ad Hoc" +msgstr "" + +#: awx/main/models/rbac.py:40 +msgid "Admin" +msgstr "" + +#: awx/main/models/rbac.py:41 +msgid "Auditor" +msgstr "" + +#: awx/main/models/rbac.py:42 +msgid "Execute" +msgstr "" + +#: awx/main/models/rbac.py:43 +msgid "Member" +msgstr "" + +#: awx/main/models/rbac.py:44 +msgid "Read" +msgstr "" + +#: awx/main/models/rbac.py:45 +msgid "Update" +msgstr "" + +#: awx/main/models/rbac.py:46 +msgid "Use" +msgstr "" + +#: awx/main/models/rbac.py:50 +msgid "Can manage all aspects of the system" +msgstr "" + +#: awx/main/models/rbac.py:51 +msgid "Can view all settings on the system" +msgstr "" + +#: awx/main/models/rbac.py:52 +msgid "May run ad hoc commands on an inventory" +msgstr "" + +#: awx/main/models/rbac.py:53 +#, python-format +msgid "Can manage all aspects of the %s" +msgstr "" + +#: awx/main/models/rbac.py:54 +#, python-format +msgid "Can view all settings for the %s" +msgstr "" + +#: awx/main/models/rbac.py:55 +#, python-format +msgid "May run the %s" +msgstr "" + +#: awx/main/models/rbac.py:56 +#, python-format +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:59 +#, python-format +msgid "Can use the %s in a job template" +msgstr "" + +#: awx/main/models/rbac.py:123 msgid "roles" msgstr "" -#: main/models/rbac.py:438 +#: awx/main/models/rbac.py:439 msgid "role_ancestors" msgstr "" -#: main/models/schedules.py:69 +#: awx/main/models/schedules.py:69 msgid "Enables processing of this schedule by Tower." msgstr "" -#: main/models/schedules.py:75 +#: awx/main/models/schedules.py:75 msgid "The first occurrence of the schedule occurs on or after this time." msgstr "" -#: main/models/schedules.py:81 +#: awx/main/models/schedules.py:81 msgid "" "The last occurrence of the schedule occurs before this time, aftewards the " "schedule expires." msgstr "" -#: main/models/schedules.py:85 +#: awx/main/models/schedules.py:85 msgid "A value representing the schedules iCal recurrence rule." msgstr "" -#: main/models/schedules.py:91 +#: awx/main/models/schedules.py:91 msgid "The next time that the scheduled action will run." msgstr "" -#: main/models/unified_jobs.py:58 +#: awx/main/models/unified_jobs.py:58 msgid "New" msgstr "" -#: main/models/unified_jobs.py:60 +#: awx/main/models/unified_jobs.py:60 msgid "Waiting" msgstr "" -#: main/models/unified_jobs.py:61 +#: awx/main/models/unified_jobs.py:61 msgid "Running" msgstr "" -#: main/models/unified_jobs.py:65 +#: awx/main/models/unified_jobs.py:65 msgid "Canceled" msgstr "" -#: main/models/unified_jobs.py:69 +#: awx/main/models/unified_jobs.py:69 msgid "Never Updated" msgstr "" -#: main/models/unified_jobs.py:73 ui/templates/ui/index.html:85 -#: ui/templates/ui/index.html.py:104 +#: 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 "" -#: main/models/unified_jobs.py:74 +#: awx/main/models/unified_jobs.py:74 msgid "Missing" msgstr "" -#: main/models/unified_jobs.py:78 +#: awx/main/models/unified_jobs.py:78 msgid "No External Source" msgstr "" -#: main/models/unified_jobs.py:85 +#: awx/main/models/unified_jobs.py:85 msgid "Updating" msgstr "" -#: main/models/unified_jobs.py:403 +#: awx/main/models/unified_jobs.py:403 msgid "Relaunch" msgstr "" -#: main/models/unified_jobs.py:404 +#: awx/main/models/unified_jobs.py:404 msgid "Callback" msgstr "" -#: main/models/unified_jobs.py:405 +#: awx/main/models/unified_jobs.py:405 msgid "Scheduled" msgstr "" -#: main/models/unified_jobs.py:406 +#: awx/main/models/unified_jobs.py:406 msgid "Dependency" msgstr "" -#: main/models/unified_jobs.py:407 +#: awx/main/models/unified_jobs.py:407 msgid "Workflow" msgstr "" -#: main/models/unified_jobs.py:408 +#: awx/main/models/unified_jobs.py:408 msgid "Sync" msgstr "" -#: main/models/unified_jobs.py:454 +#: awx/main/models/unified_jobs.py:454 msgid "The Tower node the job executed on." msgstr "" -#: main/models/unified_jobs.py:480 +#: awx/main/models/unified_jobs.py:480 msgid "The date and time the job was queued for starting." msgstr "" -#: main/models/unified_jobs.py:486 +#: awx/main/models/unified_jobs.py:486 msgid "The date and time the job finished execution." msgstr "" -#: main/models/unified_jobs.py:492 +#: awx/main/models/unified_jobs.py:492 msgid "Elapsed time in seconds that the job ran." msgstr "" -#: main/models/unified_jobs.py:514 +#: awx/main/models/unified_jobs.py:514 msgid "" "A status field to indicate the state of the job if it wasn't able to run and " "capture stdout" msgstr "" -#: main/notifications/base.py:17 main/notifications/email_backend.py:28 +#: 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 "" -#: main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:46 msgid "Error sending messages: {}" msgstr "" -#: main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:48 msgid "Error sending message to hipchat: {}" msgstr "" -#: main/notifications/irc_backend.py:54 +#: awx/main/notifications/irc_backend.py:54 msgid "Exception connecting to irc server: {}" msgstr "" -#: main/notifications/pagerduty_backend.py:39 +#: awx/main/notifications/pagerduty_backend.py:39 msgid "Exception connecting to PagerDuty: {}" msgstr "" -#: main/notifications/pagerduty_backend.py:48 -#: main/notifications/slack_backend.py:52 -#: main/notifications/twilio_backend.py:46 +#: 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 "" -#: main/notifications/twilio_backend.py:36 +#: awx/main/notifications/twilio_backend.py:36 msgid "Exception connecting to Twilio: {}" msgstr "" -#: main/notifications/webhook_backend.py:38 -#: main/notifications/webhook_backend.py:40 +#: awx/main/notifications/webhook_backend.py:38 +#: awx/main/notifications/webhook_backend.py:40 msgid "Error sending notification webhook: {}" msgstr "" -#: main/scheduler/__init__.py:130 +#: awx/main/scheduler/__init__.py:130 msgid "" "Job spawned from workflow could not start because it was not in the right " "state or required manual credentials" msgstr "" -#: main/tasks.py:180 +#: awx/main/tasks.py:180 msgid "Ansible Tower host usage over 90%" msgstr "" -#: main/tasks.py:185 +#: awx/main/tasks.py:185 msgid "Ansible Tower license will expire soon" msgstr "" -#: main/tasks.py:240 +#: awx/main/tasks.py:240 msgid "status_str must be either succeeded or failed" msgstr "" -#: main/utils/common.py:89 +#: awx/main/utils/common.py:89 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "" -#: main/utils/common.py:243 +#: awx/main/utils/common.py:243 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "" -#: main/utils/common.py:250 main/utils/common.py:262 main/utils/common.py:281 +#: awx/main/utils/common.py:250 awx/main/utils/common.py:262 +#: awx/main/utils/common.py:281 #, python-format msgid "Invalid %s URL" msgstr "" -#: main/utils/common.py:252 main/utils/common.py:290 +#: awx/main/utils/common.py:252 awx/main/utils/common.py:290 #, python-format msgid "Unsupported %s URL" msgstr "" -#: main/utils/common.py:292 +#: awx/main/utils/common.py:292 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "" -#: main/utils/common.py:294 +#: awx/main/utils/common.py:294 #, python-format msgid "Host is required for %s URL" msgstr "" -#: main/utils/common.py:312 +#: awx/main/utils/common.py:312 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "" -#: main/utils/common.py:318 +#: awx/main/utils/common.py:318 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "" -#: main/validators.py:60 +#: awx/main/validators.py:60 #, python-format msgid "Invalid certificate or key: %r..." msgstr "" -#: main/validators.py:74 +#: awx/main/validators.py:74 #, python-format msgid "Invalid private key: unsupported type \"%s\"" msgstr "" -#: main/validators.py:78 +#: awx/main/validators.py:78 #, python-format msgid "Unsupported PEM object type: \"%s\"" msgstr "" -#: main/validators.py:103 +#: awx/main/validators.py:103 msgid "Invalid base64-encoded data" msgstr "" -#: main/validators.py:122 +#: awx/main/validators.py:122 msgid "Exactly one private key is required." msgstr "" -#: main/validators.py:124 +#: awx/main/validators.py:124 msgid "At least one private key is required." msgstr "" -#: main/validators.py:126 +#: awx/main/validators.py:126 #, python-format msgid "" "At least %(min_keys)d private keys are required, only %(key_count)d provided." msgstr "" -#: main/validators.py:129 +#: awx/main/validators.py:129 #, python-format msgid "Only one private key is allowed, %(key_count)d provided." msgstr "" -#: main/validators.py:131 +#: awx/main/validators.py:131 #, python-format msgid "" "No more than %(max_keys)d private keys are allowed, %(key_count)d provided." msgstr "" -#: main/validators.py:136 +#: awx/main/validators.py:136 msgid "Exactly one certificate is required." msgstr "" -#: main/validators.py:138 +#: awx/main/validators.py:138 msgid "At least one certificate is required." msgstr "" -#: main/validators.py:140 +#: awx/main/validators.py:140 #, python-format msgid "" "At least %(min_certs)d certificates are required, only %(cert_count)d " "provided." msgstr "" -#: main/validators.py:143 +#: awx/main/validators.py:143 #, python-format msgid "Only one certificate is allowed, %(cert_count)d provided." msgstr "" -#: main/validators.py:145 +#: awx/main/validators.py:145 #, python-format msgid "" "No more than %(max_certs)d certificates are allowed, %(cert_count)d provided." msgstr "" -#: main/views.py:20 +#: awx/main/views.py:20 msgid "API Error" msgstr "" -#: main/views.py:49 +#: awx/main/views.py:49 msgid "Bad Request" msgstr "" -#: main/views.py:50 +#: awx/main/views.py:50 msgid "The request could not be understood by the server." msgstr "" -#: main/views.py:57 +#: awx/main/views.py:57 msgid "Forbidden" msgstr "" -#: main/views.py:58 +#: awx/main/views.py:58 msgid "You don't have permission to access the requested resource." msgstr "" -#: main/views.py:65 +#: awx/main/views.py:65 msgid "Not Found" msgstr "" -#: main/views.py:66 +#: awx/main/views.py:66 msgid "The requested resource could not be found." msgstr "" -#: main/views.py:73 +#: awx/main/views.py:73 msgid "Server Error" msgstr "" -#: main/views.py:74 +#: awx/main/views.py:74 msgid "A server error has occurred." msgstr "" -#: settings/defaults.py:611 +#: awx/settings/defaults.py:611 msgid "Chicago" msgstr "" -#: settings/defaults.py:612 +#: awx/settings/defaults.py:612 msgid "Dallas/Ft. Worth" msgstr "" -#: settings/defaults.py:613 +#: awx/settings/defaults.py:613 msgid "Northern Virginia" msgstr "" -#: settings/defaults.py:614 +#: awx/settings/defaults.py:614 msgid "London" msgstr "" -#: settings/defaults.py:615 +#: awx/settings/defaults.py:615 msgid "Sydney" msgstr "" -#: settings/defaults.py:616 +#: awx/settings/defaults.py:616 msgid "Hong Kong" msgstr "" -#: settings/defaults.py:643 +#: awx/settings/defaults.py:643 msgid "US East (Northern Virginia)" msgstr "" -#: settings/defaults.py:644 +#: awx/settings/defaults.py:644 msgid "US East (Ohio)" msgstr "" -#: settings/defaults.py:645 +#: awx/settings/defaults.py:645 msgid "US West (Oregon)" msgstr "" -#: settings/defaults.py:646 +#: awx/settings/defaults.py:646 msgid "US West (Northern California)" msgstr "" -#: settings/defaults.py:647 +#: awx/settings/defaults.py:647 msgid "Canada (Central)" msgstr "" -#: settings/defaults.py:648 +#: awx/settings/defaults.py:648 msgid "EU (Frankfurt)" msgstr "" -#: settings/defaults.py:649 +#: awx/settings/defaults.py:649 msgid "EU (Ireland)" msgstr "" -#: settings/defaults.py:650 +#: awx/settings/defaults.py:650 msgid "EU (London)" msgstr "" -#: settings/defaults.py:651 +#: awx/settings/defaults.py:651 msgid "Asia Pacific (Singapore)" msgstr "" -#: settings/defaults.py:652 +#: awx/settings/defaults.py:652 msgid "Asia Pacific (Sydney)" msgstr "" -#: settings/defaults.py:653 +#: awx/settings/defaults.py:653 msgid "Asia Pacific (Tokyo)" msgstr "" -#: settings/defaults.py:654 +#: awx/settings/defaults.py:654 msgid "Asia Pacific (Seoul)" msgstr "" -#: settings/defaults.py:655 +#: awx/settings/defaults.py:655 msgid "Asia Pacific (Mumbai)" msgstr "" -#: settings/defaults.py:656 +#: awx/settings/defaults.py:656 msgid "South America (Sao Paulo)" msgstr "" -#: settings/defaults.py:657 +#: awx/settings/defaults.py:657 msgid "US West (GovCloud)" msgstr "" -#: settings/defaults.py:658 +#: awx/settings/defaults.py:658 msgid "China (Beijing)" msgstr "" -#: settings/defaults.py:707 +#: awx/settings/defaults.py:707 msgid "US East (B)" msgstr "" -#: settings/defaults.py:708 +#: awx/settings/defaults.py:708 msgid "US East (C)" msgstr "" -#: settings/defaults.py:709 +#: awx/settings/defaults.py:709 msgid "US East (D)" msgstr "" -#: settings/defaults.py:710 +#: awx/settings/defaults.py:710 msgid "US Central (A)" msgstr "" -#: settings/defaults.py:711 +#: awx/settings/defaults.py:711 msgid "US Central (B)" msgstr "" -#: settings/defaults.py:712 +#: awx/settings/defaults.py:712 msgid "US Central (C)" msgstr "" -#: settings/defaults.py:713 +#: awx/settings/defaults.py:713 msgid "US Central (F)" msgstr "" -#: settings/defaults.py:714 +#: awx/settings/defaults.py:714 msgid "Europe West (B)" msgstr "" -#: settings/defaults.py:715 +#: awx/settings/defaults.py:715 msgid "Europe West (C)" msgstr "" -#: settings/defaults.py:716 +#: awx/settings/defaults.py:716 msgid "Europe West (D)" msgstr "" -#: settings/defaults.py:717 +#: awx/settings/defaults.py:717 msgid "Asia East (A)" msgstr "" -#: settings/defaults.py:718 +#: awx/settings/defaults.py:718 msgid "Asia East (B)" msgstr "" -#: settings/defaults.py:719 +#: awx/settings/defaults.py:719 msgid "Asia East (C)" msgstr "" -#: settings/defaults.py:743 +#: awx/settings/defaults.py:743 msgid "US Central" msgstr "" -#: settings/defaults.py:744 +#: awx/settings/defaults.py:744 msgid "US East" msgstr "" -#: settings/defaults.py:745 +#: awx/settings/defaults.py:745 msgid "US East 2" msgstr "" -#: settings/defaults.py:746 +#: awx/settings/defaults.py:746 msgid "US North Central" msgstr "" -#: settings/defaults.py:747 +#: awx/settings/defaults.py:747 msgid "US South Central" msgstr "" -#: settings/defaults.py:748 +#: awx/settings/defaults.py:748 msgid "US West" msgstr "" -#: settings/defaults.py:749 +#: awx/settings/defaults.py:749 msgid "Europe North" msgstr "" -#: settings/defaults.py:750 +#: awx/settings/defaults.py:750 msgid "Europe West" msgstr "" -#: settings/defaults.py:751 +#: awx/settings/defaults.py:751 msgid "Asia Pacific East" msgstr "" -#: settings/defaults.py:752 +#: awx/settings/defaults.py:752 msgid "Asia Pacific Southeast" msgstr "" -#: settings/defaults.py:753 +#: awx/settings/defaults.py:753 msgid "Japan East" msgstr "" -#: settings/defaults.py:754 +#: awx/settings/defaults.py:754 msgid "Japan West" msgstr "" -#: settings/defaults.py:755 +#: awx/settings/defaults.py:755 msgid "Brazil South" msgstr "" -#: sso/apps.py:9 +#: awx/sso/apps.py:9 msgid "Single Sign-On" msgstr "" -#: sso/conf.py:27 +#: awx/sso/conf.py:27 msgid "" "Mapping to organization admins/users from social auth accounts. This " "setting\n" @@ -2725,7 +2820,7 @@ msgid "" " remove_admins." msgstr "" -#: sso/conf.py:76 +#: 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" @@ -2754,40 +2849,40 @@ msgid "" " the rules above will be removed from the team." msgstr "" -#: sso/conf.py:119 +#: awx/sso/conf.py:119 msgid "Authentication Backends" msgstr "" -#: sso/conf.py:120 +#: awx/sso/conf.py:120 msgid "" "List of authentication backends that are enabled based on license features " "and other authentication settings." msgstr "" -#: sso/conf.py:133 +#: awx/sso/conf.py:133 msgid "Social Auth Organization Map" msgstr "" -#: sso/conf.py:145 +#: awx/sso/conf.py:145 msgid "Social Auth Team Map" msgstr "" -#: sso/conf.py:157 +#: awx/sso/conf.py:157 msgid "Social Auth User Fields" msgstr "" -#: sso/conf.py:158 +#: 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 "" -#: sso/conf.py:176 +#: awx/sso/conf.py:176 msgid "LDAP Server URI" msgstr "" -#: sso/conf.py:177 +#: 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 " @@ -2795,18 +2890,19 @@ msgid "" "disabled if this parameter is empty." msgstr "" -#: sso/conf.py:181 sso/conf.py:199 sso/conf.py:211 sso/conf.py:223 -#: sso/conf.py:239 sso/conf.py:258 sso/conf.py:280 sso/conf.py:296 -#: sso/conf.py:315 sso/conf.py:332 sso/conf.py:349 sso/conf.py:365 -#: sso/conf.py:382 sso/conf.py:420 sso/conf.py:461 +#: 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 msgid "LDAP" msgstr "" -#: sso/conf.py:193 +#: awx/sso/conf.py:193 msgid "LDAP Bind DN" msgstr "" -#: sso/conf.py:194 +#: 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 " @@ -2814,27 +2910,27 @@ msgid "" "user account we will use to login to query LDAP for other user information." msgstr "" -#: sso/conf.py:209 +#: awx/sso/conf.py:209 msgid "LDAP Bind Password" msgstr "" -#: sso/conf.py:210 +#: awx/sso/conf.py:210 msgid "Password used to bind LDAP user account." msgstr "" -#: sso/conf.py:221 +#: awx/sso/conf.py:221 msgid "LDAP Start TLS" msgstr "" -#: sso/conf.py:222 +#: awx/sso/conf.py:222 msgid "Whether to enable TLS when the LDAP connection is not using SSL." msgstr "" -#: sso/conf.py:232 +#: awx/sso/conf.py:232 msgid "LDAP Connection Options" msgstr "" -#: sso/conf.py:233 +#: 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). " @@ -2843,11 +2939,11 @@ msgid "" "values that can be set." msgstr "" -#: sso/conf.py:251 +#: awx/sso/conf.py:251 msgid "LDAP User Search" msgstr "" -#: sso/conf.py:252 +#: awx/sso/conf.py:252 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 " @@ -2856,11 +2952,11 @@ msgid "" "possible. See python-ldap documentation as linked at the top of this section." msgstr "" -#: sso/conf.py:274 +#: awx/sso/conf.py:274 msgid "LDAP User DN Template" msgstr "" -#: sso/conf.py:275 +#: awx/sso/conf.py:275 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 " @@ -2868,11 +2964,11 @@ msgid "" "will be used instead of AUTH_LDAP_USER_SEARCH." msgstr "" -#: sso/conf.py:290 +#: awx/sso/conf.py:290 msgid "LDAP User Attribute Map" msgstr "" -#: sso/conf.py:291 +#: awx/sso/conf.py:291 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 " @@ -2880,54 +2976,54 @@ msgid "" "change the values (not the keys) of the dictionary/hash-table." msgstr "" -#: sso/conf.py:310 +#: awx/sso/conf.py:310 msgid "LDAP Group Search" msgstr "" -#: sso/conf.py:311 +#: awx/sso/conf.py:311 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 "" -#: sso/conf.py:328 +#: awx/sso/conf.py:328 msgid "LDAP Group Type" msgstr "" -#: sso/conf.py:329 +#: awx/sso/conf.py:329 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 "" -#: sso/conf.py:344 +#: awx/sso/conf.py:344 msgid "LDAP Require Group" msgstr "" -#: sso/conf.py:345 +#: awx/sso/conf.py:345 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 "" -#: sso/conf.py:361 +#: awx/sso/conf.py:361 msgid "LDAP Deny Group" msgstr "" -#: sso/conf.py:362 +#: awx/sso/conf.py:362 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 "" -#: sso/conf.py:375 +#: awx/sso/conf.py:375 msgid "LDAP User Flags By Group" msgstr "" -#: sso/conf.py:376 +#: awx/sso/conf.py:376 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 " @@ -2936,11 +3032,11 @@ msgid "" "false at login time based on current LDAP settings." msgstr "" -#: sso/conf.py:394 +#: awx/sso/conf.py:394 msgid "LDAP Organization Map" msgstr "" -#: sso/conf.py:395 +#: awx/sso/conf.py:395 msgid "" "Mapping between organization admins/users and LDAP groups. This controls " "what users are placed into what Tower organizations relative to their LDAP " @@ -2967,11 +3063,11 @@ msgid "" "remove_admins." msgstr "" -#: sso/conf.py:443 +#: awx/sso/conf.py:443 msgid "LDAP Team Map" msgstr "" -#: sso/conf.py:444 +#: awx/sso/conf.py:444 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 " @@ -2990,87 +3086,88 @@ msgid "" "of the given groups will be removed from the team." msgstr "" -#: sso/conf.py:487 +#: awx/sso/conf.py:487 msgid "RADIUS Server" msgstr "" -#: sso/conf.py:488 +#: awx/sso/conf.py:488 msgid "" "Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " "setting is empty." msgstr "" -#: sso/conf.py:490 sso/conf.py:504 sso/conf.py:516 +#: awx/sso/conf.py:490 awx/sso/conf.py:504 awx/sso/conf.py:516 msgid "RADIUS" msgstr "" -#: sso/conf.py:502 +#: awx/sso/conf.py:502 msgid "RADIUS Port" msgstr "" -#: sso/conf.py:503 +#: awx/sso/conf.py:503 msgid "Port of RADIUS server." msgstr "" -#: sso/conf.py:514 +#: awx/sso/conf.py:514 msgid "RADIUS Secret" msgstr "" -#: sso/conf.py:515 +#: awx/sso/conf.py:515 msgid "Shared secret for authenticating to RADIUS server." msgstr "" -#: sso/conf.py:531 +#: awx/sso/conf.py:531 msgid "Google OAuth2 Callback URL" msgstr "" -#: sso/conf.py:532 +#: awx/sso/conf.py:532 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 "" -#: sso/conf.py:536 sso/conf.py:547 sso/conf.py:558 sso/conf.py:571 -#: sso/conf.py:585 sso/conf.py:597 sso/conf.py:609 +#: 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 msgid "Google OAuth2" msgstr "" -#: sso/conf.py:545 +#: awx/sso/conf.py:545 msgid "Google OAuth2 Key" msgstr "" -#: sso/conf.py:546 +#: awx/sso/conf.py:546 msgid "" "The OAuth2 key from your web application at https://console.developers." "google.com/." msgstr "" -#: sso/conf.py:556 +#: awx/sso/conf.py:556 msgid "Google OAuth2 Secret" msgstr "" -#: sso/conf.py:557 +#: awx/sso/conf.py:557 msgid "" "The OAuth2 secret from your web application at https://console.developers." "google.com/." msgstr "" -#: sso/conf.py:568 +#: awx/sso/conf.py:568 msgid "Google OAuth2 Whitelisted Domains" msgstr "" -#: sso/conf.py:569 +#: awx/sso/conf.py:569 msgid "" "Update this setting to restrict the domains who are allowed to login using " "Google OAuth2." msgstr "" -#: sso/conf.py:580 +#: awx/sso/conf.py:580 msgid "Google OAuth2 Extra Arguments" msgstr "" -#: sso/conf.py:581 +#: awx/sso/conf.py:581 msgid "" "Extra arguments for Google OAuth2 login. When only allowing a single domain " "to authenticate, set to `{\"hd\": \"yourdomain.com\"}` and Google will not " @@ -3078,60 +3175,60 @@ msgid "" "Google accounts." msgstr "" -#: sso/conf.py:595 +#: awx/sso/conf.py:595 msgid "Google OAuth2 Organization Map" msgstr "" -#: sso/conf.py:607 +#: awx/sso/conf.py:607 msgid "Google OAuth2 Team Map" msgstr "" -#: sso/conf.py:623 +#: awx/sso/conf.py:623 msgid "GitHub OAuth2 Callback URL" msgstr "" -#: sso/conf.py:624 +#: awx/sso/conf.py:624 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 "" -#: sso/conf.py:628 sso/conf.py:639 sso/conf.py:649 sso/conf.py:661 -#: sso/conf.py:673 +#: 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 msgid "GitHub OAuth2" msgstr "" -#: sso/conf.py:637 +#: awx/sso/conf.py:637 msgid "GitHub OAuth2 Key" msgstr "" -#: sso/conf.py:638 +#: awx/sso/conf.py:638 msgid "The OAuth2 key (Client ID) from your GitHub developer application." msgstr "" -#: sso/conf.py:647 +#: awx/sso/conf.py:647 msgid "GitHub OAuth2 Secret" msgstr "" -#: sso/conf.py:648 +#: awx/sso/conf.py:648 msgid "" "The OAuth2 secret (Client Secret) from your GitHub developer application." msgstr "" -#: sso/conf.py:659 +#: awx/sso/conf.py:659 msgid "GitHub OAuth2 Organization Map" msgstr "" -#: sso/conf.py:671 +#: awx/sso/conf.py:671 msgid "GitHub OAuth2 Team Map" msgstr "" -#: sso/conf.py:687 +#: awx/sso/conf.py:687 msgid "GitHub Organization OAuth2 Callback URL" msgstr "" -#: sso/conf.py:688 sso/conf.py:763 +#: awx/sso/conf.py:688 awx/sso/conf.py:763 msgid "" "Create an organization-owned application at https://github.com/organizations/" "/settings/applications and obtain an OAuth2 key (Client ID) and " @@ -3139,86 +3236,86 @@ msgid "" "application." msgstr "" -#: sso/conf.py:692 sso/conf.py:703 sso/conf.py:713 sso/conf.py:725 -#: sso/conf.py:736 sso/conf.py:748 +#: 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 msgid "GitHub Organization OAuth2" msgstr "" -#: sso/conf.py:701 +#: awx/sso/conf.py:701 msgid "GitHub Organization OAuth2 Key" msgstr "" -#: sso/conf.py:702 sso/conf.py:777 +#: awx/sso/conf.py:702 awx/sso/conf.py:777 msgid "The OAuth2 key (Client ID) from your GitHub organization application." msgstr "" -#: sso/conf.py:711 +#: awx/sso/conf.py:711 msgid "GitHub Organization OAuth2 Secret" msgstr "" -#: sso/conf.py:712 sso/conf.py:787 +#: awx/sso/conf.py:712 awx/sso/conf.py:787 msgid "" "The OAuth2 secret (Client Secret) from your GitHub organization application." msgstr "" -#: sso/conf.py:722 +#: awx/sso/conf.py:722 msgid "GitHub Organization Name" msgstr "" -#: sso/conf.py:723 +#: awx/sso/conf.py:723 msgid "" "The name of your GitHub organization, as used in your organization's URL: " "https://github.com//." msgstr "" -#: sso/conf.py:734 +#: awx/sso/conf.py:734 msgid "GitHub Organization OAuth2 Organization Map" msgstr "" -#: sso/conf.py:746 +#: awx/sso/conf.py:746 msgid "GitHub Organization OAuth2 Team Map" msgstr "" -#: sso/conf.py:762 +#: awx/sso/conf.py:762 msgid "GitHub Team OAuth2 Callback URL" msgstr "" -#: sso/conf.py:767 sso/conf.py:778 sso/conf.py:788 sso/conf.py:800 -#: sso/conf.py:811 sso/conf.py:823 +#: 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 msgid "GitHub Team OAuth2" msgstr "" -#: sso/conf.py:776 +#: awx/sso/conf.py:776 msgid "GitHub Team OAuth2 Key" msgstr "" -#: sso/conf.py:786 +#: awx/sso/conf.py:786 msgid "GitHub Team OAuth2 Secret" msgstr "" -#: sso/conf.py:797 +#: awx/sso/conf.py:797 msgid "GitHub Team ID" msgstr "" -#: sso/conf.py:798 +#: awx/sso/conf.py:798 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 "" -#: sso/conf.py:809 +#: awx/sso/conf.py:809 msgid "GitHub Team OAuth2 Organization Map" msgstr "" -#: sso/conf.py:821 +#: awx/sso/conf.py:821 msgid "GitHub Team OAuth2 Team Map" msgstr "" -#: sso/conf.py:837 +#: awx/sso/conf.py:837 msgid "Azure AD OAuth2 Callback URL" msgstr "" -#: sso/conf.py:838 +#: awx/sso/conf.py:838 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 " @@ -3226,117 +3323,118 @@ msgid "" "application." msgstr "" -#: sso/conf.py:842 sso/conf.py:853 sso/conf.py:863 sso/conf.py:875 -#: sso/conf.py:887 +#: 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 msgid "Azure AD OAuth2" msgstr "" -#: sso/conf.py:851 +#: awx/sso/conf.py:851 msgid "Azure AD OAuth2 Key" msgstr "" -#: sso/conf.py:852 +#: awx/sso/conf.py:852 msgid "The OAuth2 key (Client ID) from your Azure AD application." msgstr "" -#: sso/conf.py:861 +#: awx/sso/conf.py:861 msgid "Azure AD OAuth2 Secret" msgstr "" -#: sso/conf.py:862 +#: awx/sso/conf.py:862 msgid "The OAuth2 secret (Client Secret) from your Azure AD application." msgstr "" -#: sso/conf.py:873 +#: awx/sso/conf.py:873 msgid "Azure AD OAuth2 Organization Map" msgstr "" -#: sso/conf.py:885 +#: awx/sso/conf.py:885 msgid "Azure AD OAuth2 Team Map" msgstr "" -#: sso/conf.py:906 +#: awx/sso/conf.py:906 msgid "SAML Service Provider Callback URL" msgstr "" -#: sso/conf.py:907 +#: awx/sso/conf.py:907 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 "" -#: sso/conf.py:910 sso/conf.py:924 sso/conf.py:937 sso/conf.py:951 -#: sso/conf.py:965 sso/conf.py:983 sso/conf.py:1005 sso/conf.py:1024 -#: sso/conf.py:1044 sso/conf.py:1078 sso/conf.py:1091 +#: 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 msgid "SAML" msgstr "" -#: sso/conf.py:921 +#: awx/sso/conf.py:921 msgid "SAML Service Provider Metadata URL" msgstr "" -#: sso/conf.py:922 +#: awx/sso/conf.py:922 msgid "" "If your identity provider (IdP) allows uploading an XML metadata file, you " "can download one from this URL." msgstr "" -#: sso/conf.py:934 +#: awx/sso/conf.py:934 msgid "SAML Service Provider Entity ID" msgstr "" -#: sso/conf.py:935 +#: awx/sso/conf.py:935 msgid "" "The application-defined unique identifier used as the audience of the SAML " "service provider (SP) configuration." msgstr "" -#: sso/conf.py:948 +#: awx/sso/conf.py:948 msgid "SAML Service Provider Public Certificate" msgstr "" -#: sso/conf.py:949 +#: awx/sso/conf.py:949 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "certificate content here." msgstr "" -#: sso/conf.py:962 +#: awx/sso/conf.py:962 msgid "SAML Service Provider Private Key" msgstr "" -#: sso/conf.py:963 +#: awx/sso/conf.py:963 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "private key content here." msgstr "" -#: sso/conf.py:981 +#: awx/sso/conf.py:981 msgid "SAML Service Provider Organization Info" msgstr "" -#: sso/conf.py:982 +#: awx/sso/conf.py:982 msgid "Configure this setting with information about your app." msgstr "" -#: sso/conf.py:1003 +#: awx/sso/conf.py:1003 msgid "SAML Service Provider Technical Contact" msgstr "" -#: sso/conf.py:1004 sso/conf.py:1023 +#: awx/sso/conf.py:1004 awx/sso/conf.py:1023 msgid "Configure this setting with your contact information." msgstr "" -#: sso/conf.py:1022 +#: awx/sso/conf.py:1022 msgid "SAML Service Provider Support Contact" msgstr "" -#: sso/conf.py:1037 +#: awx/sso/conf.py:1037 msgid "SAML Enabled Identity Providers" msgstr "" -#: sso/conf.py:1038 +#: awx/sso/conf.py:1038 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 " @@ -3345,217 +3443,237 @@ msgid "" "Attribute names may be overridden for each IdP." msgstr "" -#: sso/conf.py:1076 +#: awx/sso/conf.py:1076 msgid "SAML Organization Map" msgstr "" -#: sso/conf.py:1089 +#: awx/sso/conf.py:1089 msgid "SAML Team Map" msgstr "" -#: sso/fields.py:123 +#: awx/sso/fields.py:123 +#, python-brace-format msgid "Invalid connection option(s): {invalid_options}." msgstr "" -#: sso/fields.py:194 +#: awx/sso/fields.py:194 msgid "Base" msgstr "" -#: sso/fields.py:195 +#: awx/sso/fields.py:195 msgid "One Level" msgstr "" -#: sso/fields.py:196 +#: awx/sso/fields.py:196 msgid "Subtree" msgstr "" -#: sso/fields.py:214 +#: awx/sso/fields.py:214 +#, python-brace-format msgid "Expected a list of three items but got {length} instead." msgstr "" -#: sso/fields.py:215 +#: awx/sso/fields.py:215 +#, python-brace-format msgid "Expected an instance of LDAPSearch but got {input_type} instead." msgstr "" -#: sso/fields.py:251 +#: awx/sso/fields.py:251 +#, python-brace-format msgid "" "Expected an instance of LDAPSearch or LDAPSearchUnion but got {input_type} " "instead." msgstr "" -#: sso/fields.py:278 +#: awx/sso/fields.py:278 +#, python-brace-format msgid "Invalid user attribute(s): {invalid_attrs}." msgstr "" -#: sso/fields.py:295 +#: awx/sso/fields.py:295 +#, python-brace-format msgid "Expected an instance of LDAPGroupType but got {input_type} instead." msgstr "" -#: sso/fields.py:323 +#: awx/sso/fields.py:323 +#, python-brace-format msgid "Invalid user flag: \"{invalid_flag}\"." msgstr "" -#: sso/fields.py:339 sso/fields.py:506 +#: awx/sso/fields.py:339 awx/sso/fields.py:506 +#, python-brace-format msgid "" "Expected None, True, False, a string or list of strings but got {input_type} " "instead." msgstr "" -#: sso/fields.py:375 +#: awx/sso/fields.py:375 +#, python-brace-format msgid "Missing key(s): {missing_keys}." msgstr "" -#: sso/fields.py:376 +#: awx/sso/fields.py:376 +#, python-brace-format msgid "Invalid key(s): {invalid_keys}." msgstr "" -#: sso/fields.py:425 sso/fields.py:542 +#: awx/sso/fields.py:425 awx/sso/fields.py:542 +#, python-brace-format msgid "Invalid key(s) for organization map: {invalid_keys}." msgstr "" -#: sso/fields.py:443 +#: awx/sso/fields.py:443 +#, python-brace-format msgid "Missing required key for team map: {invalid_keys}." msgstr "" -#: sso/fields.py:444 sso/fields.py:561 +#: awx/sso/fields.py:444 awx/sso/fields.py:561 +#, python-brace-format msgid "Invalid key(s) for team map: {invalid_keys}." msgstr "" -#: sso/fields.py:560 +#: awx/sso/fields.py:560 +#, python-brace-format msgid "Missing required key for team map: {missing_keys}." msgstr "" -#: sso/fields.py:578 +#: awx/sso/fields.py:578 +#, python-brace-format msgid "Missing required key(s) for org info record: {missing_keys}." msgstr "" -#: sso/fields.py:591 +#: awx/sso/fields.py:591 +#, python-brace-format msgid "Invalid language code(s) for org info: {invalid_lang_codes}." msgstr "" -#: sso/fields.py:610 +#: awx/sso/fields.py:610 +#, python-brace-format msgid "Missing required key(s) for contact: {missing_keys}." msgstr "" -#: sso/fields.py:622 +#: awx/sso/fields.py:622 +#, python-brace-format msgid "Missing required key(s) for IdP: {missing_keys}." msgstr "" -#: sso/pipeline.py:24 +#: awx/sso/pipeline.py:24 +#, python-brace-format msgid "An account cannot be found for {0}" msgstr "" -#: sso/pipeline.py:30 +#: awx/sso/pipeline.py:30 msgid "Your account is inactive" msgstr "" -#: sso/validators.py:19 sso/validators.py:44 +#: awx/sso/validators.py:19 awx/sso/validators.py:44 #, python-format msgid "DN must include \"%%(user)s\" placeholder for username: %s" msgstr "" -#: sso/validators.py:26 +#: awx/sso/validators.py:26 #, python-format msgid "Invalid DN: %s" msgstr "" -#: sso/validators.py:56 +#: awx/sso/validators.py:56 #, python-format msgid "Invalid filter: %s" msgstr "" -#: templates/error.html:4 ui/templates/ui/index.html:8 +#: awx/templates/error.html:4 awx/ui/templates/ui/index.html:8 msgid "Ansible Tower" msgstr "" -#: templates/rest_framework/api.html:39 +#: awx/templates/rest_framework/api.html:39 msgid "Ansible Tower API Guide" msgstr "" -#: templates/rest_framework/api.html:40 +#: awx/templates/rest_framework/api.html:40 msgid "Back to Ansible Tower" msgstr "" -#: templates/rest_framework/api.html:41 +#: awx/templates/rest_framework/api.html:41 msgid "Resize" msgstr "" -#: templates/rest_framework/base.html:78 templates/rest_framework/base.html:92 +#: 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 "" -#: templates/rest_framework/base.html:80 +#: awx/templates/rest_framework/base.html:80 msgid "Specify a format for the GET request" msgstr "" -#: templates/rest_framework/base.html:86 +#: 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 "" -#: templates/rest_framework/base.html:100 +#: awx/templates/rest_framework/base.html:100 #, python-format msgid "Make an OPTIONS request on the %(name)s resource" msgstr "" -#: templates/rest_framework/base.html:106 +#: awx/templates/rest_framework/base.html:106 #, python-format msgid "Make a DELETE request on the %(name)s resource" msgstr "" -#: templates/rest_framework/base.html:113 +#: awx/templates/rest_framework/base.html:113 msgid "Filters" msgstr "" -#: templates/rest_framework/base.html:172 -#: templates/rest_framework/base.html:186 +#: 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 "" -#: templates/rest_framework/base.html:216 -#: templates/rest_framework/base.html:230 +#: 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 "" -#: templates/rest_framework/base.html:233 +#: awx/templates/rest_framework/base.html:233 #, python-format msgid "Make a PATCH request on the %(name)s resource" msgstr "" -#: ui/apps.py:9 ui/conf.py:22 ui/conf.py:38 ui/conf.py:53 +#: awx/ui/apps.py:9 awx/ui/conf.py:22 awx/ui/conf.py:38 awx/ui/conf.py:53 msgid "UI" msgstr "" -#: ui/conf.py:16 +#: awx/ui/conf.py:16 msgid "Off" msgstr "" -#: ui/conf.py:17 +#: awx/ui/conf.py:17 msgid "Anonymous" msgstr "" -#: ui/conf.py:18 +#: awx/ui/conf.py:18 msgid "Detailed" msgstr "" -#: ui/conf.py:20 +#: awx/ui/conf.py:20 msgid "Analytics Tracking State" msgstr "" -#: ui/conf.py:21 +#: awx/ui/conf.py:21 msgid "Enable or Disable Analytics Tracking." msgstr "" -#: ui/conf.py:31 +#: awx/ui/conf.py:31 msgid "Custom Login Info" msgstr "" -#: ui/conf.py:32 +#: 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 " @@ -3564,42 +3682,42 @@ msgid "" "(paragraphs) must be escaped as `\\n` within the block of text." msgstr "" -#: ui/conf.py:48 +#: awx/ui/conf.py:48 msgid "Custom Logo" msgstr "" -#: ui/conf.py:49 +#: 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 "" -#: ui/fields.py:29 +#: 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 "" -#: ui/fields.py:30 +#: awx/ui/fields.py:30 msgid "Invalid base64-encoded data in data URL." msgstr "" -#: ui/templates/ui/index.html:49 +#: awx/ui/templates/ui/index.html:49 msgid "" "Your session will expire in 60 seconds, would you like to continue?" msgstr "" -#: ui/templates/ui/index.html:64 +#: awx/ui/templates/ui/index.html:64 msgid "CANCEL" msgstr "" -#: ui/templates/ui/index.html:116 +#: awx/ui/templates/ui/index.html:116 msgid "Set how many days of data should be retained." msgstr "" -#: ui/templates/ui/index.html:122 +#: awx/ui/templates/ui/index.html:122 msgid "" "Please enter an integer that is not " @@ -3608,7 +3726,7 @@ msgid "" "span>." msgstr "" -#: ui/templates/ui/index.html:127 +#: 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 " @@ -3620,11 +3738,11 @@ msgid "" "
" msgstr "" -#: ui/templates/ui/index.html:136 +#: awx/ui/templates/ui/index.html:136 msgid "Select a time period after which to remove old facts" msgstr "" -#: ui/templates/ui/index.html:150 +#: awx/ui/templates/ui/index.html:150 msgid "" "Please enter an integer " @@ -3633,11 +3751,11 @@ msgid "" "that is lower than 9999." msgstr "" -#: ui/templates/ui/index.html:155 +#: awx/ui/templates/ui/index.html:155 msgid "Select a frequency for snapshot retention" msgstr "" -#: ui/templates/ui/index.html:169 +#: awx/ui/templates/ui/index.html:169 msgid "" "Please enter an integer." msgstr "" -#: ui/templates/ui/index.html:175 +#: awx/ui/templates/ui/index.html:175 msgid "working..." msgstr "" diff --git a/awx/main/models/rbac.py b/awx/main/models/rbac.py index 9e40846b42..63662c8edc 100644 --- a/awx/main/models/rbac.py +++ b/awx/main/models/rbac.py @@ -13,6 +13,7 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey +from django.utils.translation import ugettext_lazy as _ # AWX @@ -33,29 +34,29 @@ ROLE_SINGLETON_SYSTEM_ADMINISTRATOR='system_administrator' ROLE_SINGLETON_SYSTEM_AUDITOR='system_auditor' role_names = { - 'system_administrator' : 'System Administrator', - 'system_auditor' : 'System Auditor', - 'adhoc_role' : 'Ad Hoc', - 'admin_role' : 'Admin', - 'auditor_role' : 'Auditor', - 'execute_role' : 'Execute', - 'member_role' : 'Member', - 'read_role' : 'Read', - 'update_role' : 'Update', - 'use_role' : 'Use', + 'system_administrator' : _('System Administrator'), + 'system_auditor' : _('System Auditor'), + 'adhoc_role' : _('Ad Hoc'), + 'admin_role' : _('Admin'), + 'auditor_role' : _('Auditor'), + 'execute_role' : _('Execute'), + 'member_role' : _('Member'), + 'read_role' : _('Read'), + 'update_role' : _('Update'), + 'use_role' : _('Use'), } role_descriptions = { - 'system_administrator' : 'Can manage all aspects of the system', - 'system_auditor' : 'Can view all settings on the system', - 'adhoc_role' : 'May run ad hoc commands on an inventory', - 'admin_role' : 'Can manage all aspects of the %s', - 'auditor_role' : 'Can view all settings for the %s', - 'execute_role' : 'May run the %s', - 'member_role' : 'User is a member of the %s', - 'read_role' : 'May view settings for the %s', - 'update_role' : 'May update project or inventory or group using the configured source update system', - 'use_role' : 'Can use the %s in a job template', + 'system_administrator' : _('Can manage all aspects of the system'), + 'system_auditor' : _('Can view all settings on the system'), + 'adhoc_role' : _('May run ad hoc commands on an inventory'), + 'admin_role' : _('Can manage all aspects of the %s'), + 'auditor_role' : _('Can view all settings for the %s'), + 'execute_role' : _('May run the %s'), + 'member_role' : _('User is a member of the %s'), + 'read_role' : _('May view settings for the %s'), + 'update_role' : _('May update project or inventory or group using the configured source update system'), + 'use_role' : _('Can use the %s in a job template'), } diff --git a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html index 5cd8e19b1e..c9ca9c5e51 100644 --- a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html +++ b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html @@ -23,10 +23,10 @@ 1 -
+
Please select Users / Teams from the lists below.
-
+
Please select Users from the list below.
@@ -34,12 +34,12 @@
+ ng-class="{'is-selected': usersSelected }" translate> Users
+ ng-class="{'is-selected': teamsSelected }" translate> Teams
@@ -59,7 +59,7 @@ 2 - Please assign roles to the selected users/teams + Please assign roles to the selected users/teams
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 bc30eff1b7..f162e28c58 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 @@ -26,7 +26,7 @@ 1 -
+
Please select resources from the lists below.
@@ -34,30 +34,30 @@
+ ng-class="{'is-selected': tab.job_templates }" translate> Job Templates
+ translate> Workflow Templates
+ ng-class="{'is-selected': tab.projects }" translate> Projects
+ translate> Inventories
+ translate> Credentials
@@ -86,10 +86,10 @@ 2 - Please assign roles to the selected resources + Please assign roles to the selected resources
+ ng-click="toggleKeyPane()" translate> Key
@@ -97,34 +97,34 @@
+ ng-show="showSection2Tab('job_templates')" translate> Job Templates
+ ng-show="showSection2Tab('workflow_templates')" translate> Workflow Templates
+ translate> Projects
+ translate> Inventories
+ translate> Credentials
@@ -170,13 +170,13 @@
diff --git a/awx/ui/client/src/access/rbac-multiselect/permissionsTeams.list.js b/awx/ui/client/src/access/rbac-multiselect/permissionsTeams.list.js index 8986478e85..dd05b4b0cc 100644 --- a/awx/ui/client/src/access/rbac-multiselect/permissionsTeams.list.js +++ b/awx/ui/client/src/access/rbac-multiselect/permissionsTeams.list.js @@ -5,7 +5,7 @@ *************************************************/ - export default function() { + export default ['i18n', function(i18n) { return { searchSize: 'col-lg-12 col-md-12 col-sm-12 col-xs-12', name: 'teams', @@ -15,19 +15,20 @@ multiSelectExtended: true, index: false, hover: true, - emptyListText : 'No Teams exist', + emptyListText : i18n._('No Teams exist'), fields: { name: { key: true, - label: 'name' + label: i18n._('name') }, organization: { - label: 'organization', + label: i18n._('organization'), ngBind: 'team.summary_fields.organization.name', sourceModel: 'organization', - sourceField: 'name' + sourceField: 'name', + searchable: true } } }; -} +}]; diff --git a/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js b/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js index 58a5605281..9769df3506 100644 --- a/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js +++ b/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js @@ -5,7 +5,7 @@ *************************************************/ - export default function() { + export default ['i18n', function(i18n) { return { name: 'users', iterator: 'user', @@ -21,22 +21,22 @@ multiSelectExtended: true, index: false, hover: true, - emptyListText : 'No Users exist', + emptyListText : i18n._('No Users exist'), fields: { first_name: { - label: 'First Name', + label: i18n._('First Name'), columnClass: 'col-md-3 col-sm-3 hidden-xs' }, last_name: { - label: 'Last Name', + label: i18n._('Last Name'), columnClass: 'col-md-3 col-sm-3 hidden-xs' }, username: { key: true, - label: 'Username', + label: i18n._('Username'), columnClass: 'col-md-5 col-sm-5 col-xs-11' }, }, }; -} +}]; diff --git a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js index 99e3a1d8ed..f5276dbc12 100644 --- a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js +++ b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js @@ -8,7 +8,8 @@ export default [ 'CreateSelect2', - function(CreateSelect2) { + 'i18n', + function(CreateSelect2, i18n) { return { restrict: 'E', scope: { @@ -21,7 +22,7 @@ export default CreateSelect2({ element: '.roleSelect2', multiple: true, - placeholder: 'Select roles' + placeholder: i18n._('Select roles') }); } }; diff --git a/awx/ui/client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html b/awx/ui/client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html index 67e4452ebc..9735fd6e17 100644 --- a/awx/ui/client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html +++ b/awx/ui/client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html @@ -9,15 +9,15 @@ diff --git a/awx/ui/client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js b/awx/ui/client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js index dc6c4a819d..c8cfc37147 100644 --- a/awx/ui/client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js +++ b/awx/ui/client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js @@ -4,7 +4,7 @@ * All Rights Reserved *************************************************/ -export default ['templateUrl', function(templateUrl) { +export default ['templateUrl', 'i18n', function(templateUrl, i18n) { return { restrict: 'E', scope: true, @@ -15,18 +15,18 @@ export default ['templateUrl', function(templateUrl) { $scope.streamTarget = ($state.params && $state.params.target) ? $state.params.target : 'dashboard'; $scope.options = [ - {label: 'All Activity', value: 'dashboard'}, - {label: 'Credentials', value: 'credential'}, - {label: 'Hosts', value: 'host'}, - {label: 'Inventories', value: 'inventory'}, - {label: 'Inventory Scripts', value: 'inventory_script'}, - {label: 'Jobs', value: 'job'}, - {label: 'Organizations', value: 'organization'}, - {label: 'Projects', value: 'project'}, - {label: 'Schedules', value: 'schedule'}, - {label: 'Teams', value: 'team'}, - {label: 'Templates', value: 'template'}, - {label: 'Users', value: 'user'} + {label: i18n._('All Activity'), value: 'dashboard'}, + {label: i18n._('Credentials'), value: 'credential'}, + {label: i18n._('Hosts'), value: 'host'}, + {label: i18n._('Inventories'), value: 'inventory'}, + {label: i18n._('Inventory Scripts'), value: 'inventory_script'}, + {label: i18n._('Jobs'), value: 'job'}, + {label: i18n._('Organizations'), value: 'organization'}, + {label: i18n._('Projects'), value: 'project'}, + {label: i18n._('Schedules'), value: 'schedule'}, + {label: i18n._('Teams'), value: 'team'}, + {label: i18n._('Templates'), value: 'template'}, + {label: i18n._('Users'), value: 'user'} ]; CreateSelect2({ diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 577ce739b8..4cf399699d 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -99,6 +99,8 @@ var tower = angular.module('Tower', [ require('angular-tz-extensions'), require('lr-infinite-scroll'), require('ng-toast'), + 'gettext', + 'I18N', uiRouter, 'ui.router.state.events', @@ -201,8 +203,6 @@ var tower = angular.module('Tower', [ scheduler.name, 'ApiModelHelper', 'ActivityStreamHelper', - 'gettext', - 'I18N', 'WorkflowFormDefinition', 'InventorySourcesListDefinition', 'WorkflowMakerFormDefinition' @@ -290,6 +290,9 @@ var tower = angular.module('Tower', [ "jobs": ["status_changed"] } } + }, + ncyBreadcrumb: { + label: N_('PROJECTS') } }) }); @@ -371,12 +374,12 @@ var tower = angular.module('Tower', [ 'CheckLicense', '$location', 'Authorization', 'LoadBasePaths', 'Timer', 'ClearScope', 'LoadConfig', 'Store', 'pendoService', 'Prompt', 'Rest', 'Wait', 'ProcessErrors', '$state', 'GetBasePath', 'ConfigService', - 'FeaturesService', '$filter', 'SocketService', 'I18NInit', + 'FeaturesService', '$filter', 'SocketService', function($stateExtender, $q, $compile, $cookieStore, $rootScope, $log, $stateParams, CheckLicense, $location, Authorization, LoadBasePaths, Timer, ClearScope, LoadConfig, Store, pendoService, Prompt, Rest, Wait, ProcessErrors, $state, GetBasePath, ConfigService, FeaturesService, - $filter, SocketService, I18NInit) { + $filter, SocketService) { $rootScope.$state = $state; $rootScope.$state.matches = function(stateName) { @@ -388,7 +391,6 @@ var tower = angular.module('Tower', [ $log.debug(`$state.defaultErrorHandler: ${error}`); }); - I18NInit(); $stateExtender.addState({ name: 'dashboard', url: '/home', diff --git a/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html b/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html index 71192e17c6..8004975a34 100644 --- a/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html +++ b/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html @@ -1,6 +1,6 @@
-
Sub Category
+
Sub Category
@@ -173,10 +173,10 @@ @@ -194,8 +194,8 @@
- - + +
@@ -205,9 +205,9 @@ - - - + + +
PlaysStartedElapsedPlaysStartedElapsed
@@ -242,7 +242,7 @@
-
2 Please select a task below to view its associated hosts
+
2 Please select a task below to view its associated hosts
@@ -253,8 +253,8 @@
- - + +
@@ -263,10 +263,10 @@ - - - - + + + +
TasksStartedElapsedTasksStartedElapsed
@@ -304,19 +304,19 @@ {{ task.missingCount }}
- No matching hosts. + No matching hosts.
- Waiting... + Waiting... - Loading... + Loading... - No matching tasks + No matching tasks @@ -337,8 +337,8 @@
- - + +
@@ -346,9 +346,9 @@ - - - + + +
HostsItemMessageHostsItemMessage
@@ -365,13 +365,13 @@ {{ result.msg }} - Waiting... + Waiting... - Loading... + Loading... - No matching host events + No matching host events @@ -388,10 +388,10 @@ @@ -411,13 +411,13 @@
-
STANDARD OUT
+
STANDARD OUT
- - 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 64c9344b19..d49b4e521d 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 @@ -1,6 +1,6 @@ export default - function LaunchJob(Rest, Wait, ProcessErrors, ToJSON, Empty, GetBasePath, $state, $location, $rootScope) { + function LaunchJob(Rest, Wait, ProcessErrors, ToJSON, Empty, GetBasePath, $state, $location, $rootScope, i18n) { // This factory gathers up all the job launch data and POST's it. @@ -163,8 +163,10 @@ export default } }) .error(function(data, status) { - ProcessErrors(scope, data, status, null, { hdr: 'Error!', - msg: 'Failed updating job ' + scope.job_template_id + ' with variables. POST returned: ' + status }); + let template_id = scope.job_template_id; + template_id = (template_id === undefined) ? "undefined" : i18n.sprintf("%d", template_id); + ProcessErrors(scope, data, status, null, { hdr: i18n._('Error!'), + msg: i18n.sprintf(i18n._('Failed updating job %s with variables. POST returned: %d'), template_id, status) }); }); }; @@ -182,8 +184,8 @@ export default buildData(); }) .error(function (data, status) { - ProcessErrors(scope, data, status, { hdr: 'Error!', - msg: 'Failed to retrieve job template extra variables.' }); + ProcessErrors(scope, data, status, { hdr: i18n._('Error!'), + msg: i18n._('Failed to retrieve job template extra variables.') }); }); }; @@ -209,5 +211,6 @@ LaunchJob.$inject = 'GetBasePath', '$state', '$location', - '$rootScope' + '$rootScope', + 'i18n' ]; diff --git a/awx/ui/client/src/lists/AllJobs.js b/awx/ui/client/src/lists/AllJobs.js index d5e73c3982..4f09a4f501 100644 --- a/awx/ui/client/src/lists/AllJobs.js +++ b/awx/ui/client/src/lists/AllJobs.js @@ -13,7 +13,7 @@ export default name: 'jobs', basePath: 'unified_jobs', iterator: 'job', - editTitle: 'All Jobs', + editTitle: i18n._('All Jobs'), index: false, hover: true, well: false, @@ -42,13 +42,13 @@ export default noLink: true }, name: { - label: 'Name', + label: i18n._('Name'), columnClass: 'col-lg-2 col-md-3 col-sm-4 col-xs-6', ngClick: "viewJobDetails(job)", badgePlacement: 'right', badgeCustom: true, badgeIcon: ` ` }, type: { - label: 'Type', + label: i18n._('Type'), ngBind: 'job.type_label', link: false, columnClass: "col-lg-2 hidden-md hidden-sm hidden-xs", columnShow: "showJobType", }, finished: { - label: 'Finished', + label: i18n._('Finished'), noLink: true, filter: "longDate", columnClass: "col-lg-2 col-md-3 col-sm-3 hidden-xs", @@ -73,7 +73,7 @@ export default desc: true }, labels: { - label: 'Labels', + label: i18n._('Labels'), type: 'labels', nosort: true, showDelete: false, @@ -91,28 +91,28 @@ export default "view": { mode: "all", ngClick: "viewJobDetails(job)", - awToolTip: "View the job", + awToolTip: i18n._("View the job"), dataPlacement: "top" }, submit: { icon: 'icon-rocket', mode: 'all', ngClick: 'relaunchJob($event, job.id)', - awToolTip: 'Relaunch using the same parameters', + awToolTip: i18n._('Relaunch using the same parameters'), dataPlacement: 'top', ngShow: "!(job.type == 'system_job') && job.summary_fields.user_capabilities.start" }, cancel: { mode: 'all', ngClick: 'deleteJob(job.id)', - awToolTip: 'Cancel the job', + awToolTip: i18n._('Cancel the job'), dataPlacement: 'top', ngShow: "(job.status === 'running'|| job.status === 'waiting' || job.status === 'pending') && job.summary_fields.user_capabilities.start" }, "delete": { mode: 'all', ngClick: 'deleteJob(job.id)', - awToolTip: 'Delete the job', + awToolTip: i18n._('Delete the job'), dataPlacement: 'top', ngShow: "(job.status !== 'running' && job.status !== 'waiting' && job.status !== 'pending') && job.summary_fields.user_capabilities.delete" } diff --git a/awx/ui/client/src/lists/JobEvents.js b/awx/ui/client/src/lists/JobEvents.js index 9327ced8da..742fa354b6 100644 --- a/awx/ui/client/src/lists/JobEvents.js +++ b/awx/ui/client/src/lists/JobEvents.js @@ -7,11 +7,12 @@ export default angular.module('JobEventsListDefinition', []) - .value('JobEventList', { + .factory('JobEventList', ['i18n', function(i18n) { + return { name: 'jobevents', iterator: 'jobevent', - editTitle: 'Job Events', + editTitle: i18n._('Job Events'), index: false, hover: true, "class": "condensed", @@ -27,27 +28,27 @@ export default //}, events: { href: '/#/job_events/{{ job_id }}', - label: 'Events', + label: i18n._('Events'), active: true, icon: 'icon-list-ul' }, hosts: { href: '/#/job_host_summaries/{{ job_id }}', - label: 'Host Summary', + label: i18n._('Host Summary'), icon: 'icon-laptop' } }, fields: { created: { - label: 'Created On', + label: i18n._('Created On'), columnClass: 'col-lg-1 col-md-1 hidden-sm hidden-xs', key: true, nosort: true, noLink: true }, status: { - label: 'Status', + label: i18n._('Status'), showValue: false, columnClass: 'col-sm-1 col-xs-2 text-center', nosort: true, @@ -61,7 +62,7 @@ export default badgeNgClick: 'viewJobEvent(jobevent.id)' }, event_display: { - label: 'Event', + label: i18n._('Event'), hasChildren: true, ngClick: 'toggleChildren(jobevent.id, jobevent.related.children)', nosort: true, @@ -69,7 +70,7 @@ export default appendHTML: 'jobevent.event_detail' }, host: { - label: 'Host', + label: i18n._('Host'), ngBind: 'jobevent.summary_fields.host.name', ngHref: '{{ jobevent.hostLink }}', nosort: true, @@ -85,7 +86,7 @@ export default awToolTip: 'Refresh the page', ngClick: 'refresh()', actionClass: 'btn List-buttonDefault', - buttonContent: 'REFRESH' + buttonContent: i18n._('REFRESH') } }, @@ -94,10 +95,10 @@ export default columnClass: 'col-sm-1 col-xs-2', view: { - label: 'View', + label: i18n._('View'), ngClick: 'viewJobEvent(jobevent.id)', - awToolTip: 'View event details', + awToolTip: i18n._('View event details'), dataPlacement: 'top' } } - }); + };}]); diff --git a/awx/ui/client/src/lists/Streams.js b/awx/ui/client/src/lists/Streams.js index 9604a89302..bb2258a22e 100644 --- a/awx/ui/client/src/lists/Streams.js +++ b/awx/ui/client/src/lists/Streams.js @@ -14,7 +14,7 @@ export default iterator: 'activity', basePath: 'activity_stream', editTitle: i18n._('Activity Stream'), - listTitle: 'Activity Stream
{{streamSubTitle}}', + listTitle: i18n._('Activity Stream') + '
{{streamSubTitle}}', listTitleBadge: false, emptyListText: i18n._('There are no events to display at this time'), selectInstructions: '', @@ -54,7 +54,7 @@ export default awToolTip: i18n._("Refresh the page"), ngClick: "refreshStream()", actionClass: 'btn List-buttonDefault ActivityStream-refreshButton', - buttonContent: 'REFRESH' + buttonContent: i18n._('REFRESH') } }, diff --git a/awx/ui/client/src/login/authenticationServices/timer.factory.js b/awx/ui/client/src/login/authenticationServices/timer.factory.js index f68d0e412a..ebdf440baf 100644 --- a/awx/ui/client/src/login/authenticationServices/timer.factory.js +++ b/awx/ui/client/src/login/authenticationServices/timer.factory.js @@ -23,9 +23,9 @@ */ export default ['$rootScope', '$cookieStore', 'CreateDialog', 'Authorization', - 'Store', '$interval', '$state', '$q', + 'Store', '$interval', '$state', '$q', 'i18n', function ($rootScope, $cookieStore, CreateDialog, Authorization, - Store, $interval, $state, $q) { + Store, $interval, $state, $q, i18n) { return { sessionTime: null, @@ -154,7 +154,7 @@ export default }); CreateDialog({ id: 'idle-modal' , - title: "Idle Session", + title: i18n._("Idle Session"), scope: $rootScope, buttons: buttons, width: 470, diff --git a/awx/ui/client/src/management-jobs/card/card.controller.js b/awx/ui/client/src/management-jobs/card/card.controller.js index c3a8e71b04..19e521804f 100644 --- a/awx/ui/client/src/management-jobs/card/card.controller.js +++ b/awx/ui/client/src/management-jobs/card/card.controller.js @@ -10,11 +10,11 @@ export default [ 'Wait', '$compile', 'CreateDialog', 'GetBasePath' , 'SchedulesList', 'Rest' , 'ProcessErrors', 'managementJobsListObject', '$rootScope', '$state', - '$scope', 'CreateSelect2', + '$scope', 'CreateSelect2', 'i18n', function( Wait, $compile, CreateDialog, GetBasePath, SchedulesList, Rest, ProcessErrors, managementJobsListObject, $rootScope, $state, $scope, - CreateSelect2) { + CreateSelect2, i18n) { var defaultUrl = GetBasePath('system_job_templates') + "?order_by=name"; @@ -26,8 +26,8 @@ export default Wait('stop'); }) .error(function(data, status){ - ProcessErrors($scope, data, status, null, {hdr: 'Error!', - msg: 'Call to '+ defaultUrl + ' failed. Return status: '+ status}); + ProcessErrors($scope, data, status, null, {hdr: i18n._('Error!'), + msg: i18n.sprintf(i18n._('Call to %s failed. Return status: %d'), (defaultUrl === undefined) ? "undefined" : defaultUrl, status )}); }); }; getManagementJobs(); @@ -145,8 +145,10 @@ export default $state.go('managementJobStdout', {id: data.system_job}, {reload:true}); }) .error(function(data, status) { - ProcessErrors(scope, data, status, null, { hdr: 'Error!', - msg: 'Failed updating job ' + scope.job_template_id + ' with variables. POST returned: ' + status }); + let template_id = scope.job_template_id; + template_id = (template_id === undefined) ? "undefined" : i18n.sprintf("%d", template_id); + ProcessErrors(scope, data, status, null, { hdr: i18n._('Error!'), + msg: i18n.sprintf(i18n._('Failed updating job %s with variables. POST returned: %d'), template_id, status) }); }); }, "class": "btn btn-primary", @@ -233,8 +235,10 @@ export default $state.go('managementJobStdout', {id: data.system_job}, {reload:true}); }) .error(function(data, status) { - ProcessErrors(scope, data, status, null, { hdr: 'Error!', - msg: 'Failed updating job ' + scope.job_template_id + ' with variables. POST returned: ' + status }); + let template_id = scope.job_template_id; + template_id = (template_id === undefined) ? "undefined" : i18n.sprintf("%d", template_id); + ProcessErrors(scope, data, status, null, { hdr: i18n._('Error!'), + msg: i18n.sprintf(i18n._('Failed updating job %s with variables. POST returned: %d'), template_id, status) }); }); }, "class": "btn btn-primary", diff --git a/awx/ui/client/src/notifications/main.js b/awx/ui/client/src/notifications/main.js index 2b617ed95c..ce0d04429d 100644 --- a/awx/ui/client/src/notifications/main.js +++ b/awx/ui/client/src/notifications/main.js @@ -85,7 +85,7 @@ angular.module('notifications', [ }, ncyBreadcrumb: { parent: 'setup', - name: N_('NOTIFICATIONS') + label: N_('NOTIFICATIONS') } }) }); diff --git a/awx/ui/client/src/notifications/notification-templates-list/list.controller.js b/awx/ui/client/src/notifications/notification-templates-list/list.controller.js index 208c4a3b8d..d3aec68845 100644 --- a/awx/ui/client/src/notifications/notification-templates-list/list.controller.js +++ b/awx/ui/client/src/notifications/notification-templates-list/list.controller.js @@ -7,10 +7,12 @@ export default ['$rootScope', '$scope', 'Wait', 'generateList', 'NotificationTemplatesList', 'GetBasePath', 'Rest', 'ProcessErrors', 'Prompt', '$state', 'GetChoices', 'Empty', 'Find', 'ngToast', '$compile', '$filter', 'Dataset', 'rbacUiControlService', + 'i18n', function( $rootScope, $scope, Wait, GenerateList, NotificationTemplatesList, GetBasePath, Rest, ProcessErrors, Prompt, $state, GetChoices, - Empty, Find, ngToast, $compile, $filter, Dataset, rbacUiControlService) { + Empty, Find, ngToast, $compile, $filter, Dataset, rbacUiControlService, + i18n) { var defaultUrl = GetBasePath('notification_templates'), list = NotificationTemplatesList; @@ -68,8 +70,8 @@ html = "\n"; html += "\n"; html += ""; - html += ""; - html += ""; + html += ""; + html += ""; html += "\n"; html += "\n"; html += "\n"; @@ -83,7 +85,7 @@ html += "\n"; html += "
StatusTime" + i18n._("Status") + "" + i18n._("Time") + "
\n"; } else { - html = "

No recent notifications.

\n"; + html = "

" + i18n._("No recent notifications.") + "

\n"; } notification_template.template_status_html = html; } @@ -110,7 +112,7 @@ }) .catch(function() { ngToast.danger({ - content: ` ${name}: Notification Failed.`, + content: ` ${name}: ` + i18n._('Notification Failed.'), }); }); @@ -179,12 +181,12 @@ }); }); }; - var bodyHtml = '
Are you sure you want to delete the notification template below?
' + $filter('sanitize')(name) + '
'; + var bodyHtml = '
' + i18n._('Are you sure you want to delete the notification template below?') + '
' + $filter('sanitize')(name) + '
'; Prompt({ - hdr: 'Delete', + hdr: i18n._('Delete'), body: bodyHtml, action: action, - actionText: 'DELETE' + actionText: i18n._('DELETE') }); }; } diff --git a/awx/ui/client/src/notifications/notificationTemplates.form.js b/awx/ui/client/src/notifications/notificationTemplates.form.js index e115caf709..66e9a9854e 100644 --- a/awx/ui/client/src/notifications/notificationTemplates.form.js +++ b/awx/ui/client/src/notifications/notificationTemplates.form.js @@ -16,6 +16,9 @@ export default ['i18n', function(i18n) { addTitle: i18n._('New Notification Template'), editTitle: '{{ name }}', name: 'notification_template', + // I18N for "CREATE NOTIFICATION_TEMPLATE" + // on /#/notification_templates/add + breadcrumbName: i18n._('NOTIFICATION TEMPLATE'), stateTree: 'notifications', basePath: 'notification_templates', showActions: true, @@ -389,19 +392,19 @@ export default ['i18n', function(i18n) { ngDisabled: '!(notification_template.summary_fields.user_capabilities.edit || canAdd)' }, email_options: { - label: 'Options', + label: i18n._('Options'), type: 'radio_group', subForm: 'typeSubForm', ngShow: "notification_type.value == 'email'", ngChange: "emailOptionsChange()", options: [{ value: 'use_tls', - label: 'Use TLS', + label: i18n._('Use TLS'), ngShow: "notification_type.value == 'email' ", labelClass: 'NotificationsForm-radioButtons' }, { value: 'use_ssl', - label: 'Use SSL', + label: i18n._('Use SSL'), ngShow: "notification_type.value == 'email'", labelClass: 'NotificationsForm-radioButtons' }] diff --git a/awx/ui/client/src/notifications/notificationTemplates.list.js b/awx/ui/client/src/notifications/notificationTemplates.list.js index 92324c8701..70b9e21921 100644 --- a/awx/ui/client/src/notifications/notificationTemplates.list.js +++ b/awx/ui/client/src/notifications/notificationTemplates.list.js @@ -23,7 +23,7 @@ export default ['i18n', function(i18n){ nosort: true, icon: 'icon-job-{{ notification_template.status }}', awPopOver: '{{ notification_template.template_status_html }}', - dataTitle: "Recent Notifications", + dataTitle: i18n._("Recent Notifications"), dataPlacement: 'right', columnClass: 'col-lg-1 col-md-1 col-sm-2 col-xs-2 List-staticColumn--smallStatus' }, diff --git a/awx/ui/client/src/organizations/list/organizations-list.controller.js b/awx/ui/client/src/organizations/list/organizations-list.controller.js index 3849c123a4..a718db2548 100644 --- a/awx/ui/client/src/organizations/list/organizations-list.controller.js +++ b/awx/ui/client/src/organizations/list/organizations-list.controller.js @@ -7,10 +7,10 @@ export default ['$stateParams', '$scope', '$rootScope', '$location', '$log', '$compile', 'Rest', 'OrganizationList', 'Alert', 'Prompt', 'ClearScope', - 'ProcessErrors', 'GetBasePath', 'Wait', '$state', 'rbacUiControlService', '$filter', 'Dataset', + 'ProcessErrors', 'GetBasePath', 'Wait', '$state', 'rbacUiControlService', '$filter', 'Dataset', 'i18n', function($stateParams, $scope, $rootScope, $location, $log, $compile, Rest, OrganizationList, Alert, Prompt, ClearScope, - ProcessErrors, GetBasePath, Wait, $state, rbacUiControlService, $filter, Dataset) { + ProcessErrors, GetBasePath, Wait, $state, rbacUiControlService, $filter, Dataset, i18n) { ClearScope(); @@ -162,10 +162,10 @@ export default ['$stateParams', '$scope', '$rootScope', '$location', }; Prompt({ - hdr: 'Delete', - body: '
Are you sure you want to delete the organization below?
' + $filter('sanitize')(name) + '
', + hdr: i18n._('Delete'), + body: '
' + i18n._('Are you sure you want to delete the organization below?') + '
' + $filter('sanitize')(name) + '
', action: action, - actionText: 'DELETE' + actionText: i18n._('DELETE') }); }; } diff --git a/awx/ui/client/src/partials/logviewer.html b/awx/ui/client/src/partials/logviewer.html index 59fe6ca045..e3c188010b 100644 --- a/awx/ui/client/src/partials/logviewer.html +++ b/awx/ui/client/src/partials/logviewer.html @@ -1,12 +1,12 @@