From 8ffeba91a73a56a60f0774a3629bc8b8945c3fb4 Mon Sep 17 00:00:00 2001 From: tengqm Date: Sun, 21 Feb 2016 00:13:01 -0500 Subject: [PATCH] Enable translation jobs This patch adds translation support as suggested by the global guidelines. Co-Authored-By: Liuqing Jing Change-Id: Ia57a0a88b57a53543f35275254dc9dd1827fc17b --- babel-django.cfg | 5 + babel-djangojs.cfg | 14 + senlin_dashboard/locale/django.pot | 805 +++++++++++++++++++++++++++ senlin_dashboard/locale/djangojs.pot | 19 + tox.ini | 5 + 5 files changed, 848 insertions(+) create mode 100644 babel-django.cfg create mode 100644 babel-djangojs.cfg create mode 100644 senlin_dashboard/locale/django.pot create mode 100644 senlin_dashboard/locale/djangojs.pot diff --git a/babel-django.cfg b/babel-django.cfg new file mode 100644 index 00000000..e78d6c0f --- /dev/null +++ b/babel-django.cfg @@ -0,0 +1,5 @@ +[extractors] +django = django_babel.extract:extract_django + +[python: **.py] +[django: **/templates/**.html] diff --git a/babel-djangojs.cfg b/babel-djangojs.cfg new file mode 100644 index 00000000..a8273b62 --- /dev/null +++ b/babel-djangojs.cfg @@ -0,0 +1,14 @@ +[extractors] +# We use a custom extractor to find translatable strings in AngularJS +# templates. The extractor is included in horizon.utils for now. +# See http://babel.pocoo.org/docs/messages/#referencing-extraction-methods for +# details on how this works. +angular = horizon.utils.babel_extract_angular:extract_angular + +[javascript: **.js] + +# We need to look into all static folders for HTML files. +# The **/static ensures that we also search within +# /openstack_dashboard/dashboards/XYZ/static which will ensure +# that plugins are also translated. +[angular: **/static/**.html] diff --git a/senlin_dashboard/locale/django.pot b/senlin_dashboard/locale/django.pot new file mode 100644 index 00000000..4adb5fe2 --- /dev/null +++ b/senlin_dashboard/locale/django.pot @@ -0,0 +1,805 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2016. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-02-19 11:27-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" + +#: senlin_dashboard/cluster/dashboard.py:19 +#: senlin_dashboard/cluster/nodes/forms.py:33 +#: senlin_dashboard/cluster/receivers/forms.py:36 +msgid "Cluster" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:31 +msgid "Cluster Name" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:32 +#: senlin_dashboard/cluster/nodes/forms.py:30 +msgid "Profile" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:34 +msgid "Min Size" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:37 +msgid "Min size of the cluster. Default to 0." +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:39 +msgid "Max Size" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:42 +msgid "Max size of the cluster. Default to -1, means unlimited." +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:45 +msgid "Desired Capacity" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:47 +msgid "Desired capacity of the cluster. Default to 0." +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:49 +msgid "Parent Cluster" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:53 +msgid "Timeout" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:55 +msgid "Cluster creation timeout in seconds." +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:58 +#: senlin_dashboard/cluster/nodes/forms.py:42 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:30 +#: senlin_dashboard/cluster/profiles/forms.py:105 +#: senlin_dashboard/cluster/profiles/forms.py:169 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:28 +msgid "Metadata" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:60 +msgid "YAML formated metadata" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:67 +#: senlin_dashboard/cluster/nodes/forms.py:51 +msgid "Select Profile" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:81 +#, python-format +msgid "The specified metadata is not a valid YAML format: %s" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:86 +#, python-format +msgid "Creating cluster \"%s\" successfully" +msgstr "" + +#: senlin_dashboard/cluster/clusters/forms.py:92 +msgid "Unable to create cluster." +msgstr "" + +#: senlin_dashboard/cluster/clusters/panel.py:21 +#: senlin_dashboard/cluster/clusters/tables.py:132 +#: senlin_dashboard/cluster/clusters/views.py:31 +#: senlin_dashboard/cluster/clusters/templates/clusters/index.html:3 +msgid "Clusters" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:27 +#: senlin_dashboard/cluster/clusters/views.py:46 +#: senlin_dashboard/cluster/clusters/templates/clusters/_create.html:4 +#: senlin_dashboard/cluster/clusters/templates/clusters/_create.html:13 +#: senlin_dashboard/cluster/clusters/templates/clusters/create.html:3 +msgid "Create Cluster" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:47 +msgid "Delete Cluster" +msgid_plural "Delete Clusters" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/clusters/tables.py:55 +msgid "Deleted Cluster" +msgid_plural "Deleted Clusters" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/clusters/tables.py:90 +msgctxt "Current status of a Cluster" +msgid "INIT" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:91 +msgctxt "Current status of a Cluster" +msgid "ACTIVE" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:92 +msgctxt "Current status of a Cluster" +msgid "ERROR" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:93 +msgctxt "Current status of a Cluster" +msgid "DELETED" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:94 +msgctxt "Current status of a Cluster" +msgid "CRITICAL" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:96 +msgctxt "Current status of a Cluster" +msgid "WARNING" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:97 +msgctxt "Current status of a Cluster" +msgid "CREATING" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:99 +msgctxt "Current status of a Cluster" +msgid "UPDATING" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:101 +msgctxt "Current status of a Cluster" +msgid "DELETING" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:105 +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:7 +#: senlin_dashboard/cluster/nodes/tables.py:105 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:7 +#: senlin_dashboard/cluster/policies/forms.py:35 +#: senlin_dashboard/cluster/policies/tables.py:58 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:7 +#: senlin_dashboard/cluster/profiles/forms.py:72 +#: senlin_dashboard/cluster/profiles/forms.py:156 +#: senlin_dashboard/cluster/profiles/tables.py:66 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:7 +#: senlin_dashboard/cluster/receivers/forms.py:34 +#: senlin_dashboard/cluster/receivers/tables.py:58 +msgid "Name" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:108 +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:13 +#: senlin_dashboard/cluster/nodes/event_tables.py:49 +#: senlin_dashboard/cluster/nodes/tables.py:115 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:13 +msgid "Status" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:113 +#: senlin_dashboard/cluster/nodes/event_tables.py:54 +#: senlin_dashboard/cluster/nodes/tables.py:120 +msgid "Status Reason" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:116 +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:9 +#: senlin_dashboard/cluster/nodes/tables.py:109 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:9 +msgid "Profile Name" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:119 +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:15 +#: senlin_dashboard/cluster/nodes/tables.py:123 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:21 +#: senlin_dashboard/cluster/policies/tables.py:63 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:13 +#: senlin_dashboard/cluster/profiles/tables.py:71 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:19 +#: senlin_dashboard/cluster/receivers/tables.py:64 +msgid "Created" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tables.py:126 +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:18 +#: senlin_dashboard/cluster/nodes/tables.py:130 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:24 +#: senlin_dashboard/cluster/policies/tables.py:70 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:16 +#: senlin_dashboard/cluster/profiles/tables.py:78 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:22 +#: senlin_dashboard/cluster/receivers/tables.py:71 +msgid "Updated" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tabs.py:24 +#: senlin_dashboard/cluster/nodes/tabs.py:23 +#: senlin_dashboard/cluster/policies/tabs.py:19 +#: senlin_dashboard/cluster/profiles/tabs.py:19 +msgid "Overview" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tabs.py:42 +msgid "Unable to retrieve cluster event list." +msgstr "" + +#: senlin_dashboard/cluster/clusters/tabs.py:47 +#: senlin_dashboard/cluster/nodes/panel.py:21 +#: senlin_dashboard/cluster/nodes/tables.py:136 +#: senlin_dashboard/cluster/nodes/views.py:31 +#: senlin_dashboard/cluster/nodes/templates/nodes/index.html:3 +msgid "Nodes" +msgstr "" + +#: senlin_dashboard/cluster/clusters/tabs.py:61 +msgid "Unable to retrieve nodes from cluster." +msgstr "" + +#: senlin_dashboard/cluster/clusters/views.py:40 +msgid "Unable to retrieve clusters." +msgstr "" + +#: senlin_dashboard/cluster/clusters/views.py:67 +msgid "Unable to retrieve cluster." +msgstr "" + +#: senlin_dashboard/cluster/clusters/templates/clusters/_create.html:7 +#: senlin_dashboard/cluster/nodes/templates/nodes/_create.html:7 +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:7 +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:8 +#: senlin_dashboard/cluster/profiles/templates/profiles/_update.html:7 +#: senlin_dashboard/cluster/receivers/templates/receivers/_create.html:7 +msgid "Description:" +msgstr "" + +#: senlin_dashboard/cluster/clusters/templates/clusters/_create.html:8 +msgid "" +"Cluster is the collection of cloud objects, e.g. Nova servers, Heat " +"stacks, Cinder volumes, etc." +msgstr "" + +#: senlin_dashboard/cluster/clusters/templates/clusters/_create.html:12 +#: senlin_dashboard/cluster/nodes/templates/nodes/_create.html:12 +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:13 +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:14 +#: senlin_dashboard/cluster/profiles/templates/profiles/_update.html:12 +#: senlin_dashboard/cluster/receivers/templates/receivers/_create.html:12 +msgid "Cancel" +msgstr "" + +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:4 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:4 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:4 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:4 +msgid "Information" +msgstr "" + +#: senlin_dashboard/cluster/clusters/templates/clusters/_detail_overview.html:11 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:11 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:9 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:9 +msgid "ID" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:33 +msgctxt "Current status of the event" +msgid "INIT" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:34 +msgctxt "Current status of the event" +msgid "ACTIVE" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:35 +msgctxt "Current status of the event" +msgid "ERROR" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:36 +msgctxt "Current status of the event" +msgid "DELETED" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:37 +msgctxt "Current status of the event" +msgid "WARNING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:39 +msgctxt "Current status of the event" +msgid "CREATING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:41 +msgctxt "Current status of the event" +msgid "UPDATING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:43 +msgctxt "Current status of the event" +msgid "DELETING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:46 +msgid "Object ID" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:47 +msgid "Object Name" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:55 +#: senlin_dashboard/cluster/receivers/forms.py:40 +#: senlin_dashboard/cluster/receivers/tables.py:61 +msgid "Action" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:57 +msgid "Timestamp" +msgstr "" + +#: senlin_dashboard/cluster/nodes/event_tables.py:62 +#: senlin_dashboard/cluster/nodes/tabs.py:32 +msgid "Event" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:28 +msgid "Node Name" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:31 +msgid "Profile used for this node." +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:35 +msgid "Cluster for this node." +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:38 +#: senlin_dashboard/cluster/nodes/tables.py:113 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:18 +msgid "Role" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:40 +msgid "Role for this node in the specific cluster." +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:44 +#: senlin_dashboard/cluster/profiles/forms.py:108 +#: senlin_dashboard/cluster/profiles/forms.py:172 +msgid "YAML formatted metadata." +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:56 +#: senlin_dashboard/cluster/receivers/forms.py:57 +msgid "Select Cluster" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:67 +#, python-format +msgid "The specified metadata is not a valid YAML: %s" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:75 +#, python-format +msgid "Creating node \"%s\" successfully" +msgstr "" + +#: senlin_dashboard/cluster/nodes/forms.py:81 +msgid "Unable to create node." +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:27 +#: senlin_dashboard/cluster/nodes/views.py:46 +#: senlin_dashboard/cluster/nodes/templates/nodes/_create.html:4 +#: senlin_dashboard/cluster/nodes/templates/nodes/_create.html:13 +#: senlin_dashboard/cluster/nodes/templates/nodes/create.html:3 +msgid "Create Node" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:38 +msgid "Delete Node" +msgid_plural "Delete Nodes" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/nodes/tables.py:46 +msgid "Deleted Node" +msgid_plural "Deleted Nodes" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/nodes/tables.py:95 +msgctxt "Current status of a Node" +msgid "INIT" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:96 +msgctxt "Current status of a Node" +msgid "ACTIVE" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:97 +msgctxt "Current status of a Node" +msgid "ERROR" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:98 +msgctxt "Current status of a Node" +msgid "DELETED" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:99 +msgctxt "Current status of a Node" +msgid "WARNING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:100 +msgctxt "Current status of a Node" +msgid "CREATING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:101 +msgctxt "Current status of a Node" +msgid "UPDATING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:102 +msgctxt "Current status of a Node" +msgid "DELETING" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tables.py:112 +#: senlin_dashboard/cluster/nodes/templates/nodes/_detail_overview.html:15 +msgid "Physical ID" +msgstr "" + +#: senlin_dashboard/cluster/nodes/tabs.py:46 +msgid "Unable to retrieve node event list." +msgstr "" + +#: senlin_dashboard/cluster/nodes/views.py:40 +msgid "Unable to retrieve nodes." +msgstr "" + +#: senlin_dashboard/cluster/nodes/views.py:65 +msgid "Unable to retrieve node." +msgstr "" + +#: senlin_dashboard/cluster/nodes/templates/nodes/_create.html:8 +msgid "" +"Nodes are the physical objects, which can belong to any cluster of the " +"same profile type." +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:37 +#: senlin_dashboard/cluster/policies/templates/policies/_detail_overview.html:11 +#: senlin_dashboard/cluster/profiles/forms.py:158 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:13 +msgid "Spec" +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:39 +msgid "The spec yaml used to create the policy." +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:41 +msgid "Cooldown" +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:45 +msgid "" +"An integer indicating the cooldown seconds once the policy is effected. " +"Default to 0." +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:48 +msgid "Level" +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:53 +msgid "" +"An integer between 0 and 100 representing the enforcement level. Default " +"to 0." +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:60 +#, python-format +msgid "The specified data is not a valid YAML data: %s" +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:72 +#, python-format +msgid "Your policy %s has been created." +msgstr "" + +#: senlin_dashboard/cluster/policies/forms.py:77 +msgid "Unable to create new policy" +msgstr "" + +#: senlin_dashboard/cluster/policies/panel.py:21 +#: senlin_dashboard/cluster/policies/tables.py:75 +#: senlin_dashboard/cluster/policies/views.py:33 +#: senlin_dashboard/cluster/policies/templates/policies/index.html:3 +msgid "Policies" +msgstr "" + +#: senlin_dashboard/cluster/policies/tables.py:25 +#: senlin_dashboard/cluster/policies/views.py:48 +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:4 +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:14 +#: senlin_dashboard/cluster/policies/templates/policies/create.html:3 +msgid "Create Policy" +msgstr "" + +#: senlin_dashboard/cluster/policies/tables.py:35 +msgid "Delete Policy" +msgid_plural "Delete Policies" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/policies/tables.py:43 +msgid "Deleted Policy" +msgid_plural "Deleted Policies" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/policies/tables.py:60 +#: senlin_dashboard/cluster/profiles/tables.py:68 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:11 +#: senlin_dashboard/cluster/receivers/forms.py:43 +#: senlin_dashboard/cluster/receivers/tables.py:59 +msgid "Type" +msgstr "" + +#: senlin_dashboard/cluster/policies/views.py:42 +msgid "Unable to retrieve policies." +msgstr "" + +#: senlin_dashboard/cluster/policies/views.py:68 +msgid "Unable to retrieve policy." +msgstr "" + +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:8 +msgid "" +"A policy is a set of rules that can be checked and/or enforced when an " +"Action is performed on a Cluster." +msgstr "" + +#: senlin_dashboard/cluster/policies/templates/policies/_create.html:9 +msgid "Policy Spec Examples" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:46 +#: senlin_dashboard/cluster/profiles/forms.py:58 +#, python-format +msgid "The specified file is not a valid YAML file: %s" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:74 +msgid "Spec Source" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:76 +msgid "File" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:77 +msgid "YAML" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:82 +#: senlin_dashboard/cluster/profiles/forms.py:86 +msgid "Spec File" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:88 +msgid "The spec file used to create the profile." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:90 +#: senlin_dashboard/cluster/profiles/forms.py:96 +msgid "Spec YAML" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:97 +#: senlin_dashboard/cluster/profiles/forms.py:161 +msgid "The spec yaml used to create the profile." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:100 +#: senlin_dashboard/cluster/profiles/forms.py:164 +#: senlin_dashboard/cluster/profiles/templates/profiles/_detail_overview.html:16 +msgid "Permission" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:103 +#: senlin_dashboard/cluster/profiles/forms.py:167 +msgid "A string format permission for this profile." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:118 +msgid "A spec file or yaml must be specified." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:121 +msgid "Can not specify both sepc file and yaml." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:141 +#, python-format +msgid "Your profile %s has been created." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:149 +msgid "Unable to create new profile" +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:186 +#, python-format +msgid "Your profile %s has been updated." +msgstr "" + +#: senlin_dashboard/cluster/profiles/forms.py:194 +msgid "Unable to update profile" +msgstr "" + +#: senlin_dashboard/cluster/profiles/panel.py:21 +#: senlin_dashboard/cluster/profiles/tables.py:83 +#: senlin_dashboard/cluster/profiles/views.py:33 +#: senlin_dashboard/cluster/profiles/templates/profiles/index.html:3 +msgid "Profiles" +msgstr "" + +#: senlin_dashboard/cluster/profiles/tables.py:25 +#: senlin_dashboard/cluster/profiles/views.py:49 +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:5 +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:15 +#: senlin_dashboard/cluster/profiles/templates/profiles/create.html:3 +msgid "Create Profile" +msgstr "" + +#: senlin_dashboard/cluster/profiles/tables.py:33 +#: senlin_dashboard/cluster/profiles/views.py:57 +#: senlin_dashboard/cluster/profiles/templates/profiles/_update.html:4 +#: senlin_dashboard/cluster/profiles/templates/profiles/_update.html:13 +#: senlin_dashboard/cluster/profiles/templates/profiles/update.html:3 +msgid "Update Profile" +msgstr "" + +#: senlin_dashboard/cluster/profiles/tables.py:43 +msgid "Delete Profile" +msgid_plural "Delete Profiles" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/profiles/tables.py:51 +msgid "Deleted Profile" +msgid_plural "Deleted Profiles" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/profiles/views.py:41 +msgid "Unable to retrieve profiles." +msgstr "" + +#: senlin_dashboard/cluster/profiles/views.py:85 +#: senlin_dashboard/cluster/profiles/views.py:119 +msgid "Unable to retrieve profile." +msgstr "" + +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:9 +#: senlin_dashboard/cluster/profiles/templates/profiles/_update.html:8 +msgid "A profile encodes the information needed for node creation." +msgstr "" + +#: senlin_dashboard/cluster/profiles/templates/profiles/_create.html:10 +msgid "Profile Spec Examples" +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:37 +msgid "Targeted cluster for this receiver." +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:41 +msgid "Name or ID of the targeted action to be triggered." +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:45 +msgid "Type of the receiver to create. Defailt to webhook" +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:47 +msgid "Parameters" +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:50 +msgid "" +"YAML formatted parameters that will be passed to target action when the " +"receiver is triggered." +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:61 +msgid "Select Type" +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:70 +#, python-format +msgid "The parameters is not a valid YAML formatted: %s" +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:78 +#, python-format +msgid "Your receiver %s has been created successfully." +msgstr "" + +#: senlin_dashboard/cluster/receivers/forms.py:83 +msgid "Unable to create new receiver" +msgstr "" + +#: senlin_dashboard/cluster/receivers/panel.py:21 +#: senlin_dashboard/cluster/receivers/tables.py:76 +#: senlin_dashboard/cluster/receivers/views.py:28 +#: senlin_dashboard/cluster/receivers/templates/receivers/index.html:3 +msgid "Receivers" +msgstr "" + +#: senlin_dashboard/cluster/receivers/tables.py:24 +#: senlin_dashboard/cluster/receivers/views.py:43 +#: senlin_dashboard/cluster/receivers/templates/receivers/_create.html:4 +#: senlin_dashboard/cluster/receivers/templates/receivers/_create.html:13 +#: senlin_dashboard/cluster/receivers/templates/receivers/create.html:3 +msgid "Create Receiver" +msgstr "" + +#: senlin_dashboard/cluster/receivers/tables.py:35 +msgid "Delete Receiver" +msgid_plural "Delete Receivers" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/receivers/tables.py:43 +msgid "Deleted Receiver" +msgid_plural "Deleted Receivers" +msgstr[0] "" +msgstr[1] "" + +#: senlin_dashboard/cluster/receivers/tables.py:60 +msgid "Cluster ID" +msgstr "" + +#: senlin_dashboard/cluster/receivers/views.py:37 +msgid "Unable to retrieve receivers." +msgstr "" + +#: senlin_dashboard/cluster/receivers/templates/receivers/_create.html:8 +msgid "" +"A Receiver is used to prepare Senlin engine to react to external alarms " +"or events so that a specific Action can be initiated on a senlin cluster " +"automatically. For example, when workload on a cluster climbs high, a " +"receiver can change the size of a specified cluster." +msgstr "" + diff --git a/senlin_dashboard/locale/djangojs.pot b/senlin_dashboard/locale/djangojs.pot new file mode 100644 index 00000000..b3d59c40 --- /dev/null +++ b/senlin_dashboard/locale/djangojs.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2016. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-02-19 11:27-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" + diff --git a/tox.ini b/tox.ini index 888458d5..03e46a12 100644 --- a/tox.ini +++ b/tox.ini @@ -36,6 +36,11 @@ commands = python setup.py build_sphinx [testenv:debug] commands = oslo_debug_helper {posargs} +[testenv:makemessages] +commands = + pybabel extract -F babel-django.cfg -o senlin_dashboard/locale/django.pot -k gettext_noop -k gettext_lazy -k ngettext_lazy:1,2 -k ugettext_noop -k ugettext_lazy -k ungettext_lazy:1,2 -k npgettext:1c,2,3 -k pgettext_lazy:1c,2 -k npgettext_lazy:1c,2,3 senlin_dashboard + pybabel extract -F babel-djangojs.cfg -o senlin_dashboard/locale/djangojs.pot -k gettext_noop -k gettext_lazy -k ngettext_lazy:1,2 -k ugettext_noop -k ugettext_lazy -k ungettext_lazy:1,2 -k npgettext:1c,2,3 -k pgettext_lazy:1c,2 -k npgettext_lazy:1c,2,3 senlin_dashboard + [flake8] show-source = True exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,.ropeproject,tools