diff --git a/doc/source/locale/en_GB/LC_MESSAGES/doc-contributor.po b/doc/source/locale/en_GB/LC_MESSAGES/doc-contributor.po index da0a175ddf..054ddb9d6c 100644 --- a/doc/source/locale/en_GB/LC_MESSAGES/doc-contributor.po +++ b/doc/source/locale/en_GB/LC_MESSAGES/doc-contributor.po @@ -5,11 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: horizon\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 21:28+0000\n" +"POT-Creation-Date: 2020-05-01 12:46+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2020-04-27 02:48+0000\n" +"PO-Revision-Date: 2020-05-02 03:51+0000\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom)\n" "Language: en_GB\n" @@ -35,6 +35,32 @@ msgstr "**Readable & Maintainable**" msgid "**Reliable**" msgstr "**Reliable**" +msgid "" +"**app.module.js** - The root of the application. Defines the modules " +"required by" +msgstr "" +"**app.module.js** - The root of the application. Defines the modules " +"required by" + +msgid "**framework.module.js** - Reusable Horizon components. It is one of the" +msgstr "" +"**framework.module.js** - Reusable Horizon components. It is one of the" + +msgid "" +"/usr is considered read only. Software must not write in /usr at runtime. " +"However, it is fine for a package post-installation script to write in /usr. " +"When this rule was not followed, distributions had to write many tricks to " +"convince Horizon to write in ``/var/lib`` only. For example, distributions " +"wrote symlinks to ``/var/lib/openstack-dashboard``, or patched the default " +"``local_settings.py`` to write the ``SECRET_KEY`` in /var." +msgstr "" +"/usr is considered read only. Software must not write in /usr at runtime. " +"However, it is fine for a package post-installation script to write in /usr. " +"When this rule was not followed, distributions had to write many tricks to " +"convince Horizon to write in ``/var/lib`` only. For example, distributions " +"wrote symlinks to ``/var/lib/openstack-dashboard``, or patched the default " +"``local_settings.py`` to write the ``SECRET_KEY`` in /var." + msgid ":class:`~horizon.tables.Action`" msgstr ":class:`~horizon.tables.Action`" @@ -223,6 +249,15 @@ msgstr "" "A descriptive name used for display purposes. Defaults to the value of " "``name`` with the first letter of each word capitalised." +msgid "" +"A developer building a package is comparable to an engineer building a car " +"with only a manual and very few tools. If the engineer needs a specific tool " +"to build the car, he must create the tool, too." +msgstr "" +"A developer building a package is comparable to an engineer building a car " +"with only a manual and very few tools. If the engineer needs a specific tool " +"to build the car, he must create the tool, too." + msgid "" "A dict of HTML attribute strings which should be added to this column. " "Example: ``attrs={\"data-foo\": \"bar\"}``." @@ -255,6 +290,15 @@ msgstr "" "A dictionary of HTML attributes which should be rendered into the markup for " "this tab." +msgid "" +"A dictionary settings will be broken down into separate options. Good " +"examples are ``OPENSTACK_KEYSTONE_BACKEND`` and " +"``OPENSTACK_NEUTRON_NETWORK``." +msgstr "" +"A dictionary settings will be broken down into separate options. Good " +"examples are ``OPENSTACK_KEYSTONE_BACKEND`` and " +"``OPENSTACK_NEUTRON_NETWORK``." + msgid "" "A dictionary which maps context data key names to lists of callbacks. The " "callbacks may be functions, dotted python paths to functions which may be " @@ -346,6 +390,15 @@ msgstr "" "codebase. Cut the ties cleanly right where your system ends and the external " "world begins." +msgid "" +"A key of the top-level dict is a name of Django settings. A corresponding " +"value specifies oslo.config name by a list or a tuple where the first and " +"second elements specify a section and a option name respectively." +msgstr "" +"A key of the top-level dict is a name of Django settings. A corresponding " +"value specifies oslo.config name by a list or a tuple where the first and " +"second elements specify a section and a option name respectively." + msgid "" "A label of a menu button for ``table_actions_menu``. The default is \"Actions" "\" or \"More Actions\" depending on ``table_actions``." @@ -853,6 +906,9 @@ msgstr "" "A valid filter function takes one parameter and returns the decorated value. " "So e.g. these are valid filter functions ::" +msgid "A very simple example::" +msgstr "A very simple example::" + msgid "" "A workflow extends the ``extensibleService``. This means that all workflows " "inherit properties and methods provided by the ``extensibleService``. " @@ -944,6 +1000,28 @@ msgstr "" "terms of testing, documentation, and release notes - takes into " "consideration upgrade concerns from previous versions" +msgid "" +"Add a new panel/ panel group/ dashboard (See :ref:`tutorials-dashboard`). " +"JavaScript file inclusion is the same as the Upstream process." +msgstr "" +"Add a new panel/ panel group/ dashboard (See :ref:`tutorials-dashboard`). " +"JavaScript file inclusion is the same as the Upstream process." + +msgid "" +"Add the feature to the ``MICROVERSION_FEATURES`` dict in " +"``openstack_dashboard/api/microversions.py`` under the appropriate service " +"name. The feature should have at least two versions listed; the minimum " +"version (i.e. the version that introduced the feature) and the current " +"working version. Providing multiple versions reduces project maintenance " +"overheads and helps Horizon work with older service deployments." +msgstr "" +"Add the feature to the ``MICROVERSION_FEATURES`` dict in " +"``openstack_dashboard/api/microversions.py`` under the appropriate service " +"name. The feature should have at least two versions listed; the minimum " +"version (i.e. the version that introduced the feature) and the current " +"working version. Providing multiple versions reduces project maintenance " +"overheads and helps Horizon work with older service deployments." + msgid "Add the new package to `global-requirements`_." msgstr "Add the new package to `global-requirements`_." @@ -957,6 +1035,9 @@ msgstr "" msgid "Adding a complex action to a table" msgstr "Adding a complex action to a table" +msgid "Adding a feature that was introduced in a microversion" +msgstr "Adding a feature that was introduced in a microversion" + msgid "Adding actions to a table" msgstr "Adding actions to a table" @@ -1003,6 +1084,20 @@ msgstr "Adds the ``tab_group`` variable to the context data." msgid "Adds the data listed in ``contributes`` to the workflow's context." msgstr "Adds the data listed in ``contributes`` to the workflow's context." +msgid "" +"Adhere to Filesystem Hierarchy Standards (FHS). A specific file system " +"layout is not required." +msgstr "" +"Adhere to Filesystem Hierarchy Standards (FHS). A specific file system " +"layout is not required." + +msgid "" +"Adopting oslo.log might be a good candidate, but it is not covered by this " +"effort. It can be explored as future possible improvement." +msgstr "" +"Adopting oslo.log might be a good candidate, but it is not covered by this " +"effort. It can be explored as future possible improvement." + msgid "After You Write Your Patch" msgstr "After You Write Your Patch" @@ -1013,6 +1108,17 @@ msgstr "" "After importing the proper package, the completed ``views.py`` file now " "looks like the following::" +msgid "" +"After syncing policies from back-end services, you need to check what are " +"changed. If a policy referred by horizon has been changed, you need to check " +"and modify the horizon code base accordingly. To summarize which policies " +"are removed or added, a convenient tool is provided:" +msgstr "" +"After syncing policies from back-end services, you need to check what are " +"changed. If a policy referred by Horizon has been changed, you need to check " +"and modify the Horizon code base accordingly. To summarize which policies " +"are removed or added, a convenient tool is provided:" + msgid "" "Again, readability is paramount; however be conscientious of how the browser " "will handle whitespace when rendering the output. Two spaces is the " @@ -1045,6 +1151,15 @@ msgstr "" msgid "All other actions are checked to see if they should run." msgstr "All other actions are checked to see if they should run." +msgid "" +"All other dependencies are as defined by the upper-constraints file at " +"https://opendev.org/openstack/requirements/raw/branch/master/upper-" +"constraints.txt" +msgstr "" +"All other dependencies are as defined by the upper-constraints file at " +"https://opendev.org/openstack/requirements/raw/branch/master/upper-" +"constraints.txt" + msgid "" "All other exceptions bubble the stack as normal unless the ``ignore`` " "argument is passed in as ``True``, in which case only unrecognized errors " @@ -1065,9 +1180,36 @@ msgstr "" "SelfHandlingForm` classes, and modal concerns when the associated template " "inherits from `horizon/common/_modal_form.html`." +msgid "" +"Also takes an alternative builder as an optional argument, such as ``tox -e " +"docs -- ``, which will output to ``doc/build/``. Available " +"builders are listed at http://www.sphinx-doc.org/en/latest/builders.html" +msgstr "" +"Also takes an alternative builder as an optional argument, such as ``tox -e " +"docs -- ``, which will output to ``doc/build/``. Available " +"builders are listed at http://www.sphinx-doc.org/en/latest/builders.html" + +msgid "" +"Also takes an alternative builder as an optional argument, such as ``tox -e " +"docs -- ``, which will output to ``releasenotes/build/``. " +"Available builders are listed at http://www.sphinx-doc.org/en/latest/" +"builders.html" +msgstr "" +"Also takes an alternative builder as an optional argument, such as ``tox -e " +"docs -- ``, which will output to ``releasenotes/build/``. " +"Available builders are listed at http://www.sphinx-doc.org/en/latest/" +"builders.html" + msgid "Alternate Theme" msgstr "Alternate Theme" +msgid "" +"Alternatively, many distributions have system packages for PhantomJS, or it " +"can be downloaded from http://phantomjs.org/download.html." +msgstr "" +"Alternatively, many distributions have system packages for PhantomJS, or it " +"can be downloaded from http://phantomjs.org/download.html." + msgid "" "Although DevStack installs and configures an instance of Horizon when " "running stack.sh, the preferred development setup follows the instructions " @@ -1130,6 +1272,33 @@ msgstr "" "An application would have the following structure (we'll use project as an " "example)" +msgid "" +"An example of historically limiting, non-free software is Selenium. For a " +"long time, Selenium was only available from the non-free repositories of " +"Debian. The reason was that upstream included some .xpi binaries. These .xpi " +"included some Windows .dll and Linux .so files. Because they could not be " +"rebuilt from the source, all of python-selenium was declared non-free. If we " +"made Horizon build-depends on python-selenium, this would mean Horizon " +"wouldn't be in Debian main anymore (contrib and non-free are *not* " +"considered part of Debian). Recently, the package maintainer of python-" +"selenium decided to remove the .xpi files from python-selenium, and upload " +"it to Debian Experimental (this time, in main, not in non-free). If at some " +"point it is possible for Horizon to use python-selenium (without the non-" +"free .xpi files), then we could run Selenium tests at package build time." +msgstr "" +"An example of historically limiting, non-free software is Selenium. For a " +"long time, Selenium was only available from the non-free repositories of " +"Debian. The reason was that upstream included some .xpi binaries. These .xpi " +"included some Windows .dll and Linux .so files. Because they could not be " +"rebuilt from the source, all of python-selenium was declared non-free. If we " +"made Horizon build-depends on python-selenium, this would mean Horizon " +"wouldn't be in Debian main any more (contrib and non-free are *not* " +"considered part of Debian). Recently, the package maintainer of python-" +"selenium decided to remove the .xpi files from python-selenium, and upload " +"it to Debian Experimental (this time, in main, not in non-free). If at some " +"point it is possible for Horizon to use python-selenium (without the non-" +"free .xpi files), then we could run Selenium tests at package build time." + msgid "" "An integer for the maximum length of the string in this column. If the " "length of the data in this column is larger than the supplied number, the " @@ -1190,6 +1359,9 @@ msgstr "And in your ``sidebar.html`` you might have" msgid "Angular specific testing" msgstr "Angular specific testing" +msgid "Angular templates should have extension of ``.html``." +msgstr "Angular templates should have extension of ``.html``." + msgid "" "Angular's directives are prefixed with ng. Similarly, Horizon's directives " "are prefixed with hz. You can think of them as namespaces." @@ -1209,6 +1381,9 @@ msgstr "AngularJS" msgid "AngularJS Plugin" msgstr "AngularJS Plugin" +msgid "AngularJS Topic Guide" +msgstr "AngularJS Topic Guide" + msgid "AngularJS: ::" msgstr "AngularJS: ::" @@ -1232,6 +1407,17 @@ msgstr "" "workflow mechanism will attempt to place the current step before the step " "specified in the attribute." +msgid "" +"Another idea is to introduce a new field to oslo.config classes. oslo-sample-" +"generator might need to be updated. If this approach is really attractive, " +"we can try this approach in future. The above dictionary-based approach will " +"be used in the initial effort." +msgstr "" +"Another idea is to introduce a new field to oslo.config classes. oslo-sample-" +"generator might need to be updated. If this approach is really attractive, " +"we can try this approach in future. The above dictionary-based approach will " +"be used in the initial effort." + msgid "" "Another reason to avoid copying a library into Horizon source code is that " "it might create conflicting licenses. Distributing sources with conflicting " @@ -1258,12 +1444,31 @@ msgstr "" "but not listed in ``HORIZON_CONFIG['dashboards']`` will be appended to the " "end of the list alphabetically." +msgid "" +"Any time multiple rules are specified in a single `policy.check` method " +"call, the result is the logical `and` of each rule check. So, if any rule " +"fails verification, the result is `False`." +msgstr "" +"Any time multiple rules are specified in a single `policy.check` method " +"call, the result is the logical `and` of each rule check. So, if any rule " +"fails verification, the result is `False`." + msgid "Application Design" msgstr "Application Design" +msgid "Application Structure" +msgstr "Application Structure" + msgid "Approved blueprints (features)" msgstr "Approved blueprints (features)" +msgid "" +"As a developer, if you are going to add a library named \"foo\", the package " +"must adhere to the following standards:" +msgstr "" +"As a developer, if you are going to add a library named \"foo\", the package " +"must adhere to the following standards:" + msgid "As a project, Horizon adheres to code quality standards." msgstr "As a project, Horizon adheres to code quality standards." @@ -1294,6 +1499,15 @@ msgstr "" "Some projects already define their policies in the code, and some still have " "their policies in ``policy.json`` files." +msgid "" +"As the first step toward ini-based-configuration, I propose to define all " +"default values of existing settings in a single place per module. More " +"specifically, the following modules are used:" +msgstr "" +"As the first step toward ini-based-configuration, I propose to define all " +"default values of existing settings in a single place per module. More " +"specifically, the following modules are used:" + msgid "" "As you can see, the main body will be defined in ``_create_snapshot.html``, " "so we must also create that file under the ``mypanel/templates/mypanel`` " @@ -1401,6 +1615,21 @@ msgstr "" "context selection, etc...). As of this moment, this is also true for Angular " "plugins." +msgid "" +"At times it might not be possible to support all versions of a library. It " +"might be too much work, or it might be very hard to test in the gate. In " +"this case, it is best to use whatever is available inside the target " +"distributions. For example, Horizon currently supports jQuery >= 1.7.2, as " +"this is what is currently available in Debian Jessie and Ubuntu Trusty (the " +"last LTS)." +msgstr "" +"At times it might not be possible to support all versions of a library. It " +"might be too much work, or it might be very hard to test in the gate. In " +"this case, it is best to use whatever is available inside the target " +"distributions. For example, Horizon currently supports jQuery >= 1.7.2, as " +"this is what is currently available in Debian Jessie and Ubuntu Trusty (the " +"last LTS)." + msgid "" "Attend and participate in the weekly IRC meetings (if your timezone allows)" msgstr "" @@ -1534,6 +1763,20 @@ msgstr "Basic actions" msgid "Basic strategy of mapping" msgstr "Basic strategy of mapping" +msgid "Be a free package created with free software." +msgstr "Be a free package created with free software." + +msgid "" +"Be careful about the version of all the components you use in your " +"application. Since it is not acceptable to embed a given component within " +"Horizon, we must use what is in the distribution, including all fonts, " +"JavaScript, etc. This is where it becomes a bit tricky." +msgstr "" +"Be careful about the version of all the components you use in your " +"application. Since it is not acceptable to embed a given component within " +"Horizon, we must use what is in the distribution, including all fonts, " +"JavaScript, etc. This is where it becomes a bit tricky." + msgid "" "Be sure to generate the documentation before submitting a patch for review. " "Unexpected warnings often appear when building the documentation, and slight " @@ -1561,6 +1804,17 @@ msgstr "" "``Exception`` types, it's necessary to have a centralised place for handling " "exceptions which may be raised." +msgid "" +"Because Horizon is composed of both the ``horizon`` app and the " +"``openstack_dashboard`` reference project, there are in fact two sets of " +"unit tests. While they can be run individually without problem, there is an " +"easier way:" +msgstr "" +"Because Horizon is composed of both the ``horizon`` app and the " +"``openstack_dashboard`` reference project, there are in fact two sets of " +"unit tests. While they can be run individually without problem, there is an " +"easier way:" + msgid "" "Because ``Actions`` are always interactive, they always provide form " "controls, and thus inherit from Django's ``Form`` class. However, they have " @@ -1570,6 +1824,21 @@ msgstr "" "controls, and thus inherit from Django's ``Form`` class. However, they have " "some additional intelligence added to them:" +msgid "" +"Because package maintainers care about the quality of the packages we " +"upload, we run tests that are available from upstream repositories. This " +"also qualifies test requirements as build requirements. The same rules apply " +"for building the software as for the software itself. Special build " +"requirements that are not included in the overall distribution are not " +"allowed." +msgstr "" +"Because package maintainers care about the quality of the packages we " +"upload, we run tests that are available from upstream repositories. This " +"also qualifies test requirements as build requirements. The same rules apply " +"for building the software as for the software itself. Special build " +"requirements that are not included in the overall distribution are not " +"allowed." + msgid "" "Because rendering is done client-side, all our view needs is to reference " "some HTML page. If you are writing a Python plugin, this view can be much " @@ -1579,6 +1848,13 @@ msgstr "" "some HTML page. If you are writing a Python plugin, this view can be much " "more complex. Refer to the topic guides for more details.::" +msgid "" +"Because the code is in ``openstack_dashboard/dashboards/identity`` we know " +"it is specific to just the ``identity`` dashboard and not used by any others." +msgstr "" +"Because the code is in ``openstack_dashboard/dashboards/identity`` we know " +"it is specific to just the ``identity`` dashboard and not used by any others." + msgid "Before you dive into writing patches, here are some of the basics:" msgstr "Before you dive into writing patches, here are some of the basics:" @@ -1772,6 +2048,15 @@ msgstr "" "workflow, which can take the form of a reversible URL pattern name, or a " "standard HTTP URL." +msgid "" +"By default running the Selenium tests will open your Firefox browser (you " +"have to install it first, else an error is raised), and you will be able to " +"see the tests actions::" +msgstr "" +"By default running the Selenium tests will open your Firefox browser (you " +"have to install it first, else an error is raised), and you will be able to " +"see the tests actions::" + msgid "" "By default this parses a string formatted as ``{{ table_name }}" "__{{ action_name }}__{{ row_id }}`` and returns each of the pieces. The " @@ -1936,6 +2221,9 @@ msgstr "Class-Based Views" msgid "Clean up the auth url to extract the exact Keystone URL" msgstr "Clean up the auth URL to extract the exact Keystone URL" +msgid "Code Layout" +msgstr "Code Layout" + msgid "Code Merge Responsibilities" msgstr "Code Merge Responsibilities" @@ -1949,6 +2237,23 @@ msgstr "" "Code review: https://review.opendev.org/#/q/project:openstack/horizon+status:" "open" +msgid "Code shared by multiple dashboards" +msgstr "Code shared by multiple dashboards" + +msgid "Code specific to one dashboard" +msgstr "Code specific to one dashboard" + +msgid "" +"Code that isn't shared beyond a single dashboard is placed in " +"``openstack_dashboard/dashboards/mydashboard/static``. Entire dashboards may " +"be enabled or disabled using Horizon's plugin mechanism. Therefore no " +"dashboards other than ``mydashboard`` can safely use this code." +msgstr "" +"Code that isn't shared beyond a single dashboard is placed in " +"``openstack_dashboard/dashboards/mydashboard/static``. Entire dashboards may " +"be enabled or disabled using Horizon's plugin mechanism. Therefore no " +"dashboards other than ``mydashboard`` can safely use this code." + msgid "" "Collect and compress static assets with ``python manage.py collectstatic -" "c`` and ``python manage.py compress``" @@ -1980,9 +2285,57 @@ msgstr "Compile the catalogue" msgid "Complex example of a workflow" msgstr "Complex example of a workflow" +msgid "Component version" +msgstr "Component version" + +msgid "" +"Component versioning has consequences for an upstream author willing to " +"integrate their software in a downstream distribution. The best situation is " +"when it is possible to support whatever version is currently available in " +"the target distributions, up to the latest version upstream. Declaring lower " +"and upper bounds within your requirements.txt does not solve the issue. It " +"allows all the tests to pass on gate because they are run against a narrow " +"set of versions in requirements.txt. The downstream distribution might still " +"have some dependencies with versions outside of the range that is specified " +"in requirements.txt. These dependencies may lead to failures that are not " +"caught in the OpenStack gate." +msgstr "" +"Component versioning has consequences for an upstream author willing to " +"integrate their software in a downstream distribution. The best situation is " +"when it is possible to support whatever version is currently available in " +"the target distributions, up to the latest version upstream. Declaring lower " +"and upper bounds within your requirements.txt does not solve the issue. It " +"allows all the tests to pass on gate because they are run against a narrow " +"set of versions in requirements.txt. The downstream distribution might still " +"have some dependencies with versions outside of the range that is specified " +"in requirements.txt. These dependencies may lead to failures that are not " +"caught in the OpenStack gate." + msgid "Conclusion" msgstr "Conclusion" +msgid "" +"Configuration files should reside under ``/etc/openstack-dashboard``. Policy " +"files should be created and modified there as well." +msgstr "" +"Configuration files should reside under ``/etc/openstack-dashboard``. Policy " +"files should be created and modified there as well." + +msgid "" +"Configuration must always be in /etc, no matter what. When this rule was not " +"followed, package maintainers had to place symlinks to ``/etc/openstack-" +"dashboard/local_settings`` in Red Hat based distributions instead of using " +"directly ``/usr/share/openstack-dashboard/openstack_dashboard/local/" +"local_settings.py`` which Horizon expects. In Debian,the configuration file " +"is named ``/etc/openstack-dashboard/local_settings.py.``" +msgstr "" +"Configuration must always be in /etc, no matter what. When this rule was not " +"followed, package maintainers had to place symlinks to ``/etc/openstack-" +"dashboard/local_settings`` in Red Hat based distributions instead of using " +"directly ``/usr/share/openstack-dashboard/openstack_dashboard/local/" +"local_settings.py`` which Horizon expects. In Debian,the configuration file " +"is named ``/etc/openstack-dashboard/local_settings.py.``" + msgid "Confirmed bugs" msgstr "Confirmed bugs" @@ -2072,6 +2425,9 @@ msgid "" msgstr "" "Could I hook an external service into a panel using, for example, an iFrame?" +msgid "Coverage Reports" +msgstr "Coverage Reports" + msgid "Coverage reports" msgstr "Coverage reports" @@ -2119,6 +2475,9 @@ msgstr "Creating a table is fairly simple:" msgid "Creating the Plugin" msgstr "Creating the Plugin" +msgid "Creating your own panel" +msgstr "Creating your own panel" + msgid "Creating your own tables" msgstr "Creating your own tables" @@ -2128,9 +2487,27 @@ msgstr "Curating the gate and triaging failures" msgid "Current behavior is changed" msgstr "Current behaviour is changed" +msgid "" +"Currently all default values are defined in codes where they are consumed. " +"This leads to the situation that it is not easy to know what are the default " +"values and in a worse case default values defined in our codebase can have " +"different default values." +msgstr "" +"Currently all default values are defined in codes where they are consumed. " +"This leads to the situation that it is not easy to know what are the default " +"values and in a worse case default values defined in our codebase can have " +"different default values." + msgid "Currently this matches for the app_label ``\"openstack\"``." msgstr "Currently this matches for the app_label ``\"openstack\"``." +msgid "" +"Currently, Angular module names must still be manually declared with " +"``ADD_ANGULAR_MODULES``, even when using automatic file discovery." +msgstr "" +"Currently, Angular module names must still be manually declared with " +"``ADD_ANGULAR_MODULES``, even when using automatic file discovery." + msgid "" "Currently, ``AUTO_DISCOVER_STATIC_FILES = True`` will only discover " "JavaScript files, not SCSS files." @@ -2138,6 +2515,15 @@ msgstr "" "Currently, ``AUTO_DISCOVER_STATIC_FILES = True`` will only discover " "JavaScript files, not SCSS files." +msgid "" +"Currently, a great deal of theming is also kept in the ``horizon.scss`` file " +"in this directory, but that will be reduced as we proceed with the new code " +"design." +msgstr "" +"Currently, a great deal of theming is also kept in the ``horizon.scss`` file " +"in this directory, but that will be reduced as we proceed with the new code " +"design." + msgid "Custom select widget." msgstr "Custom select widget." @@ -2250,9 +2636,15 @@ msgstr "" msgid "Define columns on it using :class:`~horizon.tables.Column`." msgstr "Define columns on it using :class:`~horizon.tables.Column`." +msgid "Define default values of existing settings" +msgstr "Define default values of existing settings" + msgid "Define the action" msgstr "Define the action" +msgid "Define the default values of existing settings" +msgstr "Define the default values of existing settings" + msgid "Defining a dashboard" msgstr "Defining a dashboard" @@ -2285,6 +2677,13 @@ msgstr "Defining tabs" msgid "Defining the view" msgstr "Defining the view" +msgid "" +"Dependency checks: XStatic checks that dependencies, such as fonts and " +"JavaScript libs, are available in downstream distributions." +msgstr "" +"Dependency checks: XStatic checks that dependencies, such as fonts and " +"JavaScript libs, are available in downstream distributions." + msgid "" "Designing your code with a functional testing perspective in mind helps keep " "a higher-level viewpoint in mind." @@ -2338,12 +2737,25 @@ msgstr "" "Determining if the workflow can be completed by a given user at runtime " "based on all available information." +msgid "DevStack for Horizon" +msgstr "DevStack for Horizon" + +msgid "DictOpt" +msgstr "DictOpt" + msgid "Did I mention that setting it up is a pain?" msgstr "Did I mention that setting it up is a pain?" msgid "Difficult and time-consuming to create a repeatable test environment." msgstr "Difficult and time-consuming to create a repeatable test environment." +msgid "" +"Directives do not require the module name but are encouraged to begin with " +"the ``hz`` prefix. For example: ::" +msgstr "" +"Directives do not require the module name but are encouraged to begin with " +"the ``hz`` prefix. For example: ::" + msgid "" "Dispatching connections between steps to ensure that when context data " "changes all the applicable callback functions are executed." @@ -2360,6 +2772,13 @@ msgstr "Display validation errors." msgid "Django" msgstr "Django" +msgid "" +"Django (and django related packages) provide many settings. It is not a good " +"idea to expose all of them via oslo.config. What should we expose?" +msgstr "" +"Django (and django related packages) provide many settings. It is not a good " +"idea to expose all of them via oslo.config. What should we expose?" + msgid "Django authentication backend for use with ``django.contrib.auth``." msgstr "Django authentication backend for use with ``django.contrib.auth``." @@ -2376,12 +2795,24 @@ msgstr "" "Django looks for translation message catalogues from each path specified in " "``INSTALLED_APPS`` [#]_." +msgid "" +"Django provides a lot of settings and it is not practical to cover all in " +"horizon. Only Django settings which horizon explicitly set will be defined " +"in a dedicated python module." +msgstr "" +"Django provides a lot of settings and it is not practical to cover all in " +"horizon. Only Django settings which horizon explicitly set will be defined " +"in a dedicated Python module." + msgid "Django support" msgstr "Django support" msgid "Django: Table action" msgstr "Django: Table action" +msgid "Django: policy check function" +msgstr "Django: policy check function" + msgid "" "Do not put variables or functions in the global namespace. There are several " "reasons why globals are bad, one being that all JavaScript included in an " @@ -2481,6 +2912,17 @@ msgstr "" "below to the options Horizon wants enforced along with the instructions for " "setting up ESLint for Eclipse, Sublime Text, Notepad++ and WebStorm/PyCharm." +msgid "" +"ESLint is a tool for identifying and reporting on patterns in your JS code, " +"and is part of the automated tests run by Jenkins. You can run ESLint from " +"the horizon root directory with ``tox -e npm -- lint``, or alternatively on " +"a specific directory or file with ``eslint file.js``." +msgstr "" +"ESLint is a tool for identifying and reporting on patterns in your JS code, " +"and is part of the automated tests run by Jenkins. You can run ESLint from " +"the horizon root directory with ``tox -e npm -- lint``, or alternatively on " +"a specific directory or file with ``eslint file.js``." + msgid "" "ESLint is part of the automated unit tests performed by Jenkins. The " "automated test use the default configurations, which are less strict than " @@ -2499,15 +2941,42 @@ msgstr "" "Each DataTable class must be a :class:`~horizon.tables.DataTable` class or " "its subclass." +msgid "" +"Each component should have its own folder, with the code broken up into one " +"JS component per file. (See `Single Responsibility `_ in the style guide). " +"Each folder may include styling (``*.scss``), as well as templates (``*." +"html``) and tests (``*.spec.js``). You may also include examples, by " +"appending ``.example``." +msgstr "" +"Each component should have its own folder, with the code broken up into one " +"JS component per file. (See `Single Responsibility `_ in the style guide). " +"Each folder may include styling (``*.scss``), as well as templates (``*." +"html``) and tests (``*.spec.js``). You may also include examples, by " +"appending ``.example``." + msgid "Each list item should be a dict with the following keys:" msgstr "Each list item should be a dict with the following keys:" +msgid "" +"Each policy check uses information about the user stored on the request to " +"determine the user's roles. This information was extracted from the scoped " +"token received from Keystone when authenticating." +msgstr "" +"Each policy check uses information about the user stored on the request to " +"determine the user's roles. This information was extracted from the scoped " +"token received from Keystone when authenticating." + msgid "Easy to be lax in writing them, or lazy in constructing them." msgstr "Easy to be lax in writing them, or lazy in constructing them." msgid "Editing Horizon's Source" msgstr "Editing Horizon's Source" +msgid "Embedded copies not allowed" +msgstr "Embedded copies not allowed" + msgid "Enable and show the dashboard" msgstr "Enable and show the dashboard" @@ -2548,6 +3017,15 @@ msgstr "" "Ensuring the level of testing is adequate and remains relevant as features " "are added" +msgid "" +"Entity ownership is also a valid role. To verify access to specific entities " +"like a project, the target must be specified. See the section :ref:`rule " +"targets ` later in this document." +msgstr "" +"Entity ownership is also a valid role. To verify access to specific entities " +"like a project, the target must be specified. See the section :ref:`rule " +"targets ` later in this document." + msgid "Error report filter that's always active, even in DEBUG mode." msgstr "Error report filter that's always active, even in DEBUG mode." @@ -2560,12 +3038,29 @@ msgstr "Evaluates whether this user has admin privileges." msgid "Every bug fix should have a regression test. Period." msgstr "Every bug fix should have a regression test. Period." +msgid "" +"Every distribution must comply with the Filesystem Hierarchy Standards " +"(FHS). The FHS defines a set of rules that we *must* follow as package " +"maintainers. Some of the most important ones are:" +msgstr "" +"Every distribution must comply with the Filesystem Hierarchy Standards " +"(FHS). The FHS defines a set of rules that we *must* follow as package " +"maintainers. Some of the most important ones are:" + msgid "Everything is in place, now run ``Horizon`` on the different port::" msgstr "Everything is in place, now run ``Horizon`` on the different port::" msgid "Example (these are also the default values)::" msgstr "Example (these are also the default values)::" +msgid "Example 1 - A reusable component in the **horizon** directory" +msgstr "Example 1 - A reusable component in the **horizon** directory" + +msgid "" +"Example 2 - Panel-specific code in the **openstack_dashboard** directory" +msgstr "" +"Example 2 - Panel-specific code in the **openstack_dashboard** directory" + msgid "Example of horizon WebSSO setting::" msgstr "Example of horizon WebSSO setting::" @@ -2578,6 +3073,12 @@ msgstr "Example: ::" msgid "Example: ``form_field=forms.CharField()``. Defaults to ``None``." msgstr "Example: ``form_field=forms.CharField()``. Defaults to ``None``." +msgid "Example::" +msgstr "Example::" + +msgid "Examples" +msgstr "Examples" + msgid "" "Examples of this can be found in any of the ``tables.py`` modules included " "in the reference modules under ``horizon.dashboards``." @@ -2647,12 +3148,41 @@ msgstr "Fetches the updated data for the row based on the given object ID." msgid "Fetching the row data" msgstr "Fetching the row data" +msgid "File Structure" +msgstr "File Structure" + +msgid "File tree:" +msgstr "File tree:" + +msgid "Filesystem Hierarchy Standards" +msgstr "Filesystem Hierarchy Standards" + msgid "Filter function" msgstr "Filter function" msgid "Finalizes a workflow by running through all the actions." msgstr "Finalizes a workflow by running through all the actions." +msgid "" +"Finally, components that are easily reused by any application are placed in " +"``horizon/static/framework/``. These do not contain URLs or business logic " +"that is specific to any application (even the OpenStack Dashboard " +"application)." +msgstr "" +"Finally, components that are easily reused by any application are placed in " +"``horizon/static/framework/``. These do not contain URLs or business logic " +"that is specific to any application (even the OpenStack Dashboard " +"application)." + +msgid "" +"Finally, each module lists its child modules as a dependency. This allows " +"the root module to be included by an application, which will automatically " +"define all child modules. For example: ::" +msgstr "" +"Finally, each module lists its child modules as a dependency. This allows " +"the root module to be included by an application, which will automatically " +"define all child modules. For example: ::" + msgid "" "Finally, run ``git review`` to upload your changes to Gerrit for review." msgstr "" @@ -2715,6 +3245,13 @@ msgstr "" "for gathering data, you can walk through :ref:`tutorials-table-actions` " "tutorial." +msgid "" +"For a much more in-depth discussion of testing, see the :ref:`testing topic " +"guide `." +msgstr "" +"For a much more in-depth discussion of testing, see the :ref:`testing topic " +"guide `." + msgid "" "For any tabbed interface, your fundamental element is the tab group which " "contains all your tabs. This class provides a dead-simple API for building " @@ -2774,6 +3311,28 @@ msgstr "" "the display name of the created object. Defaults to returning the ``name`` " "attribute." +msgid "" +"For example, ``ajax_poll_interval`` in HORIZON_CONFIG can be exposed to " +"operators. In such case, we can define a new settings ``AJAX_POLL_INTERVAL`` " +"in ``openstack_dashboard/defaults.py`` (or ``horizon/defaults.py``)." +msgstr "" +"For example, ``ajax_poll_interval`` in HORIZON_CONFIG can be exposed to " +"operators. In such case, we can define a new settings ``AJAX_POLL_INTERVAL`` " +"in ``openstack_dashboard/defaults.py`` (or ``horizon/defaults.py``)." + +msgid "" +"For example, some keystone settings have a prefix ``OPENSTACK_KEYSTONE_`` " +"like OPENSTACK_KEYSTONE_DEFAULT_ROLE. Some use ``KEYSTONE_`` like " +"``KEYSTONE_IDP_PROVIDER_ID``. Some do not (like ``ENFORCE_PASSWORD_CHECK``). " +"In the oslo.config options, all prefixes will be dropped. The mapping will " +"be:" +msgstr "" +"For example, some keystone settings have a prefix ``OPENSTACK_KEYSTONE_`` " +"like OPENSTACK_KEYSTONE_DEFAULT_ROLE. Some use ``KEYSTONE_`` like " +"``KEYSTONE_IDP_PROVIDER_ID``. Some do not (like ``ENFORCE_PASSWORD_CHECK``). " +"In the oslo.config options, all prefixes will be dropped. The mapping will " +"be:" + msgid "" "For example, the tab should be rendered into the HTML on load and respond to " "a click event." @@ -2781,6 +3340,17 @@ msgstr "" "For example, the tab should be rendered into the HTML on load and respond to " "a click event." +msgid "" +"For larger components, such as workflows with multiple steps, consider " +"breaking the code down further. For example, the Launch Instance workflow, " +"has one directory per step. See ``openstack_dashboard/dashboards/project/" +"static/dashboard/project/workflow/launch-instance/``" +msgstr "" +"For larger components, such as workflows with multiple steps, consider " +"breaking the code down further. For example, the Launch Instance workflow, " +"has one directory per step. See ``openstack_dashboard/dashboards/project/" +"static/dashboard/project/workflow/launch-instance/``" + msgid "" "For localization in AngularJS files, use the AngularJS service ``horizon." "framework.util.i18n.gettext``. Ensure that the injected dependency is named " @@ -2792,6 +3362,12 @@ msgstr "" "``gettext`` or ``nggettext``. If you do not do this, message extraction will " "not work properly!" +msgid "For more detail, see :doc:`/configuration/settings`." +msgstr "For more detail, see :doc:`/configuration/settings`." + +msgid "For more detailed information, see :ref:`topics-javascript-testing`." +msgstr "For more detailed information, see :ref:`topics-javascript-testing`." + msgid "" "For more information about Django views, URLs and templates, please refer to " "the `Django documentation`_." @@ -2813,6 +3389,15 @@ msgstr "" "For project with the legacy ``policy.json`` files, what we need to do is " "just to copy ``policy.json`` into the Horizon tree." +msgid "" +"For projects with \"policy-in-code\", all policies are defined as python " +"codes, so we first need to generate policy files with its default rules. To " +"do this, run the following command after install a corresponding project." +msgstr "" +"For projects with \"policy-in-code\", all policies are defined as python " +"codes, so we first need to generate policy files with its default rules. To " +"do this, run the following command after install a corresponding project." + msgid "For testing admin-only views and functionality." msgstr "For testing admin-only views and functionality." @@ -3004,6 +3589,15 @@ msgstr "" "that is shown, then click to close the form. The ``Project Images`` view " "should be shown with the new snapshot added to the table." +msgid "" +"HORIZON_CONFIG is an internal interface now and most/some(?) of them should " +"not be exposed as config options. For example, the horizon plugin mechanism " +"touches HORIZON_CONFIG to register horizon plugins." +msgstr "" +"HORIZON_CONFIG is an internal interface now and most/some(?) of them should " +"not be exposed as config options. For example, the horizon plugin mechanism " +"touches HORIZON_CONFIG to register horizon plugins." + msgid "HTML" msgstr "HTML" @@ -3038,12 +3632,18 @@ msgstr "" msgid "Handles table actions if needed." msgstr "Handles table actions if needed." +msgid "Handling Django settings" +msgstr "Handling Django settings" + msgid "Handling the injection, removal, and ordering of arbitrary steps." msgstr "Handling the injection, removal, and ordering of arbitrary steps." msgid "Handling update by POST of the cell." msgstr "Handling update by POST of the cell." +msgid "Have an active and responsive upstream to maintain the package." +msgstr "Have an active and responsive upstream to maintain the package." + msgid "Having done a release of an xstatic package:" msgstr "Having done a release of an xstatic package:" @@ -3105,6 +3705,19 @@ msgstr "Hook to customise how the workflow context is passed to the action." msgid "Horizon" msgstr "Horizon" +msgid "" +"Horizon Angular modules use names that map to the source code directory " +"structure. This provides namespace isolation for modules and services, which " +"makes dependency injection clearer. It also reduces code conflicts where two " +"different modules define a module, service or constant of the same name. For " +"example: ::" +msgstr "" +"Horizon Angular modules use names that map to the source code directory " +"structure. This provides namespace isolation for modules and services, which " +"makes dependency injection clearer. It also reduces code conflicts where two " +"different modules define a module, service or constant of the same name. For " +"example: ::" + msgid "Horizon Basics" msgstr "Horizon Basics" @@ -3145,6 +3758,9 @@ msgstr "Horizon Microversion Support" msgid "Horizon Middleware" msgstr "Horizon Middleware" +msgid "Horizon Policy Enforcement (RBAC: Role Based Access Control)" +msgstr "Horizon Policy Enforcement (RBAC: Role Based Access Control)" + msgid "Horizon Settings" msgstr "Horizon Settings" @@ -3170,11 +3786,25 @@ msgstr "" "``OPENSTACK_KEYSTONE_URL`` values in ``openstack_dashboard/local/" "local_settings.py``" +msgid "Horizon has three kinds of angular code:" +msgstr "Horizon has three kinds of angular code:" + msgid "" "Horizon holds several key values at the core of its design and architecture:" msgstr "" "Horizon holds several key values at the core of its design and architecture:" +msgid "" +"Horizon includes a `.eslintrc` in its root directory, that is used by the " +"local tests. An explanation of the options, and details of others you may " +"want to use, can be found in the `ESLint user guide `_." +msgstr "" +"Horizon includes a `.eslintrc` in its root directory, that is used by the " +"local tests. An explanation of the options, and details of others you may " +"want to use, can be found in the `ESLint user guide `_." + msgid "" "Horizon includes a componentized API for programmatically creating tables in " "the UI. Why would you want this? It means that every table renders correctly " @@ -3197,6 +3827,17 @@ msgstr "" "tabbed interfaces with fancy features like dynamic AJAX loading and nearly " "effortless templating and styling." +msgid "" +"Horizon is a Python module. Preferably, it is installed at the default " +"location for python. In Fedora and openSUSE, this is ``/usr/lib/python3.7/" +"site-packages/horizon``, and in Debian/Ubuntu it is ``/usr/lib/python3.7/" +"dist-packages/horizon``." +msgstr "" +"Horizon is a Python module. Preferably, it is installed at the default " +"location for python. In Fedora and openSUSE, this is ``/usr/lib/python3.7/" +"site-packages/horizon``, and in Debian/Ubuntu it is ``/usr/lib/python3.7/" +"dist-packages/horizon``." + msgid "" "Horizon provides a :class:`~horizon.forms.SelfHandlingForm` :class:`~horizon." "tables.DataTable` class which simplifies the vast majority of displaying " @@ -3316,6 +3957,26 @@ msgstr "" "with various supported Django versions. The corresponding job names are like " "``horizon-tox-python3-django111``." +msgid "" +"Horizon uses Django's unit test machinery (which extends Python's " +"``unittest2`` library) as the core of its test suite. As such, all tests for " +"the Python code should be written as unit tests. No doctests please." +msgstr "" +"Horizon uses Django's unit test machinery (which extends Python's " +"``unittest2`` library) as the core of its test suite. As such, all tests for " +"the Python code should be written as unit tests. No doctests please." + +msgid "" +"Horizon uses `SCSS`_ (not to be confused with Sass) to style its HTML. This " +"guide is targeted at developers adding code to upstream Horizon. For " +"information on creating your own branding/theming, see :ref:`install-" +"customizing`." +msgstr "" +"Horizon uses `SCSS`_ (not to be confused with Sass) to style its HTML. This " +"guide is targeted at developers adding code to upstream Horizon. For " +"information on creating your own branding/theming, see :ref:`install-" +"customizing`." + msgid "" "Horizon uses ``tox`` to manage virtual environments for testing and other " "development tasks. You can install it with" @@ -3346,6 +4007,13 @@ msgstr "" msgid "Horizon's Structure" msgstr "Horizon's Structure" +msgid "" +"Horizon's ``default`` theme stylesheets can be found at " +"``openstack_dashboard/themes/default/``." +msgstr "" +"Horizon's ``default`` theme stylesheets can be found at " +"``openstack_dashboard/themes/default/``." + msgid "" "Horizon's documentation is written in reStructuredText (reST) and uses " "Sphinx for additional parsing and functionality, and should follow standard " @@ -3355,6 +4023,17 @@ msgstr "" "Sphinx for additional parsing and functionality, and should follow standard " "practices for writing reST. This includes:" +msgid "" +"Horizon's policy enforcement builds on the oslo_policy engine. The basis of " +"which is ``openstack_auth/policy.py``. Services in OpenStack use the oslo " +"policy engine to define policy rules to limit access to APIs based primarily " +"on role grants and resource ownership." +msgstr "" +"Horizon's policy enforcement builds on the oslo_policy engine. The basis of " +"which is ``openstack_auth/policy.py``. Services in OpenStack use the Oslo " +"policy engine to define policy rules to limit access to APIs based primarily " +"on role grants and resource ownership." + msgid "Horizon's tests and you" msgstr "Horizon's tests and you" @@ -3376,6 +4055,9 @@ msgstr "How to Utilise RBAC" msgid "How to run the tests" msgstr "How to run the tests" +msgid "How user's roles are determined" +msgstr "How user's roles are determined" + msgid "" "However, what defines a \"good\" test is not always obvious, and there are a " "lot of common pitfalls that can easily shoot your test suite in the foot." @@ -3484,6 +4166,13 @@ msgstr "" "ahead. Checking first avoids duplicate work and makes sure nobody's toes get " "stepped on." +msgid "" +"If a rule specified is not found in the policy file, the policy check will " +"return False and the action will not be allowed." +msgstr "" +"If a rule specified is not found in the policy file, the policy check will " +"return False and the action will not be allowed." + msgid "" "If a single function can work for both single-object and multi-object cases " "then simply providing a ``handle`` function will internally route both " @@ -3764,6 +4453,13 @@ msgstr "" "Adding translation to your code is not that hard and a requirement for " "horizon." +msgid "" +"If you can't run a virtual display, or would prefer not to, you can use the " +"PhantomJS web driver instead::" +msgstr "" +"If you can't run a virtual display, or would prefer not to, you can use the " +"PhantomJS web driver instead::" + msgid "" "If you do the first suggestion above *first* it makes the second one far " "less painful. Write once, use everywhere." @@ -3816,6 +4512,9 @@ msgstr "" "section. In the tutorial below, we will show you how to customise your panel " "using Angular." +msgid "If you need to install PhantomJS, you may do so with `npm` like this::" +msgstr "If you need to install PhantomJS, you may do so with `npm` like this::" + msgid "" "If you need to update a release note of a past release, edit a corresponding " "release note file in a stable branch directly." @@ -3908,9 +4607,42 @@ msgstr "" "page_header`` section to be something else, you can change it. For example, " "change it to be ``My Panel``. The updated code could be like::" +msgid "" +"If you want to run the suite headless, without being able to see them (as " +"they are ran on Jenkins), you can run the tests::" +msgstr "" +"If you want to run the suite headless, without being able to see them (as " +"they are ran on Jenkins), you can run the tests::" + +msgid "" +"Imagine if all packages had a local copy of jQuery. If a security hole is " +"discovered in jQuery, we must write more than 90 patches in Debian, one for " +"each package that includes a copy. This is simply not practical. Therefore, " +"it is unacceptable for Horizon to copy code from other repositories when " +"creating a package. Copying code from another repository tends to create a " +"fork, diverging from the upstream code. The fork includes code that is not " +"being maintained, so if a bug is discovered in the original upstream, it " +"cannot easily be fixed by updating a single package." +msgstr "" +"Imagine if all packages had a local copy of jQuery. If a security hole is " +"discovered in jQuery, we must write more than 90 patches in Debian, one for " +"each package that includes a copy. This is simply not practical. Therefore, " +"it is unacceptable for Horizon to copy code from other repositories when " +"creating a package. Copying code from another repository tends to create a " +"fork, diverging from the upstream code. The fork includes code that is not " +"being maintained, so if a bug is discovered in the original upstream, it " +"cannot easily be fixed by updating a single package." + msgid "In AngularJS templates" msgstr "In AngularJS templates" +msgid "" +"In Debian, it is generally forbidden to have multiple versions of the same " +"library in the same Debian release. Very few exceptions exist." +msgstr "" +"In Debian, it is generally forbidden to have multiple versions of the same " +"library in the same Debian release. Very few exceptions exist." + msgid "In Django" msgstr "In Django" @@ -3979,6 +4711,28 @@ msgstr "" msgid "In essence, core reviewers share the following common ideals:" msgstr "In essence, core reviewers share the following common ideals:" +msgid "" +"In free software distributions that actively maintain OpenStack packages " +"(such as RDO, Debian, and Ubuntu), minified JavaScript is considered non-" +"free. This means that minified JavaScript should *not* be present in " +"upstream source code. At the very least, a non-minified version should be " +"present next to the minified version. Also, be aware of potential security " +"issues with minifiers. This `blog post`_ explains it very well." +msgstr "" +"In free software distributions that actively maintain OpenStack packages " +"(such as RDO, Debian, and Ubuntu), minified JavaScript is considered non-" +"free. This means that minified JavaScript should *not* be present in " +"upstream source code. At the very least, a non-minified version should be " +"present next to the minified version. Also, be aware of potential security " +"issues with minifiers. This `blog post`_ explains it very well." + +msgid "" +"In general new code without unit tests will not be accepted, and every " +"bugfix *must* include a regression test." +msgstr "" +"In general new code without unit tests will not be accepted, and every " +"bugfix *must* include a regression test." + msgid "" "In general, if you want to write code, there are three cases for issues you " "might want to work on:" @@ -3986,6 +4740,29 @@ msgstr "" "In general, if you want to write code, there are three cases for issues you " "might want to work on:" +msgid "" +"In most distributions, it is not acceptable to have multiple versions of the " +"same piece of software. In Red Hat systems, it is technically possible to " +"install 2 versions of one library at the same time, but a few restrictions " +"apply, especially for usage. However, package maintainers try to avoid " +"multiple versions as much as possible. For package dependency resolution, it " +"might be necessary to provide packages for depending packages as well. For " +"example, if you had Django-1.4 and Django-1.8 in the same release, you must " +"provide Horizon built for Django-1.4 and another package providing Horizon " +"built for Django-1.8. This is a large effort and needs to be evaluated " +"carefully." +msgstr "" +"In most distributions, it is not acceptable to have multiple versions of the " +"same piece of software. In Red Hat systems, it is technically possible to " +"install 2 versions of one library at the same time, but a few restrictions " +"apply, especially for usage. However, package maintainers try to avoid " +"multiple versions as much as possible. For package dependency resolution, it " +"might be necessary to provide packages for depending packages as well. For " +"example, if you had Django-1.4 and Django-1.8 in the same release, you must " +"provide Horizon built for Django-1.4 and another package providing Horizon " +"built for Django-1.8. This is a large effort and needs to be evaluated " +"carefully." + msgid "" "In order for translation to work properly, we need to know the user's " "locale. In horizon, the user can specify the locale using the Settings " @@ -4124,6 +4901,22 @@ msgstr "" "information here if your step requires it. Otherwise, remove the file and " "the ``helpUrl`` property from your step." +msgid "Include all tools that are required to build the package." +msgstr "Include all tools that are required to build the package." + +msgid "" +"Included at the root of the repository is the ``tox.ini`` config which " +"invokes both sets of tests, and optionally generates analyses on both " +"components in the process. ``tox`` is what Jenkins uses to verify the " +"stability of the project, so you should make sure you run it and it passes " +"before you submit any pull requests/patches." +msgstr "" +"Included at the root of the repository is the ``tox.ini`` config which " +"invokes both sets of tests, and optionally generates analyses on both " +"components in the process. ``tox`` is what Jenkins uses to verify the " +"stability of the project, so you should make sure you run it and it passes " +"before you submit any pull requests/patches." + msgid "Indicates whether there are any available actions on this table." msgstr "Indicates whether there are any available actions on this table." @@ -4166,6 +4959,15 @@ msgstr "Install the prerequisite packages." msgid "Installing Your Plugin" msgstr "Installing Your Plugin" +msgid "" +"Installs the npm dependencies listed in ``package.json`` and runs the " +"JavaScript tests. Can also take optional arguments, which will be executed " +"as an npm script following the dependency install, instead of ``test``." +msgstr "" +"Installs the npm dependencies listed in ``package.json`` and runs the " +"JavaScript tests. Can also take optional arguments, which will be executed " +"as an npm script following the dependency install, instead of ``test``." + msgid "Instructions for setting up ESLint: `ESLint setup instructions`_" msgstr "Instructions for setting up ESLint: `ESLint setup instructions`_" @@ -4178,9 +4980,22 @@ msgstr "Integration Tests" msgid "Interfacing with other OpenStack teams" msgstr "Interfacing with other OpenStack teams" +msgid "Introduce ``oslo.config``" +msgstr "Introduce ``oslo.config``" + +msgid "Introduce oslo.config" +msgstr "Introduce oslo.config" + msgid "Introduction" msgstr "Introduction" +msgid "" +"Investigation is being summarized in `an etherpad page `__." +msgstr "" +"Investigation is being summarized in `an etherpad page `__." + msgid "" "It adds the Horizon config to the context as well as setting the names " "``True`` and ``False`` in the context to their boolean equivalents for " @@ -4250,6 +5065,17 @@ msgstr "" msgid "It gives access to numerous additional features:" msgstr "It gives access to numerous additional features:" +msgid "" +"It is better to expose only HORIZON_CONFIG settings which can be really " +"exposed to operators. For such settings, we should define new settings in " +"openstack_dashboard and can populate them into HORIZON_CONFIG in ``settings." +"py``." +msgstr "" +"It is better to expose only HORIZON_CONFIG settings which can be really " +"exposed to operators. For such settings, we should define new settings in " +"openstack_dashboard and can populate them into HORIZON_CONFIG in ``settings." +"py``." + msgid "It is determined based on the current request." msgstr "It is determined based on the current request." @@ -4260,6 +5086,17 @@ msgstr "" "It is determined based on the dictionary of column name to status mappings " "passed in." +msgid "" +"It is expected that ``manage.py collectstatic`` will be run during package " +"build. This is the `recommended way`_ for Django applications. Depending on " +"configuration, it might be required to ``manage.py compress`` during package " +"build, too." +msgstr "" +"It is expected that ``manage.py collectstatic`` will be run during package " +"build. This is the `recommended way`_ for Django applications. Depending on " +"configuration, it might be required to ``manage.py compress`` during package " +"build, too." + msgid "" "It is important to note that the scope is the glue between our controllers, " "this is how we are propagating events from one controller to another. We can " @@ -4374,6 +5211,15 @@ msgstr "" "is useful because you can inspect for the following, and consider if your " "code is working like it should:" +msgid "" +"It's also possible to run a subset of the tests. Open ``tox.ini`` in the " +"Horizon root directory to see a list of test environments. You can read more " +"about tox in general at https://tox.readthedocs.io/en/latest/." +msgstr "" +"It's also possible to run a subset of the tests. Open ``tox.ini`` in the " +"Horizon root directory to see a list of test environments. You can read more " +"about tox in general at https://tox.readthedocs.io/en/latest/." + msgid "" "It's also very common to avoid testing things you really care about because " "it's more difficult. Verifying that the proper messages were displayed to " @@ -4394,12 +5240,50 @@ msgstr "" "Its interface is very straightforward, but it is responsible for handling " "some very important tasks such as:" +msgid "" +"JS code for testing should be named with extension of ``.mock.js`` and of ``." +"spec.js``." +msgstr "" +"JS code for testing should be named with extension of ``.mock.js`` and of ``." +"spec.js``." + +msgid "" +"JS code that defines an Angular module should be in a file with extension of " +"``.module.js``." +msgstr "" +"JS code that defines an Angular module should be in a file with extension of " +"``.module.js``." + +msgid "" +"Jasmine uses specs (``.spec.js``) which are kept with the JavaScript files " +"that they are testing. See the :ref:`js_file_structure` section or the " +"`Examples`_ below for more detail on this." +msgstr "" +"Jasmine uses specs (``.spec.js``) which are kept with the JavaScript files " +"that they are testing. See the :ref:`js_file_structure` section or the " +"`Examples`_ below for more detail on this." + +msgid "Jasmine uses suites and specs:" +msgstr "Jasmine uses suites and specs:" + msgid "JavaScript" msgstr "JavaScript" +msgid "JavaScript Testing" +msgstr "JavaScript Testing" + msgid "JavaScript and CSS libraries using xstatic" msgstr "JavaScript and CSS libraries using xstatic" +msgid "" +"JavaScript files can be discovered automatically, handled manually, or a mix " +"of the two. Where possible, use the automated mechanism. To use the " +"automatic functionality, add::" +msgstr "" +"JavaScript files can be discovered automatically, handled manually, or a mix " +"of the two. Where possible, use the automated mechanism. To use the " +"automatic functionality, add::" + msgid "Join the `Horizon Developers`_ team on Launchpad." msgstr "Join the `Horizon Developers`_ team on Launchpad." @@ -4428,6 +5312,9 @@ msgstr "" "is defined, its value will be used. Otherwise, the value is derived from: - " "OPENSTACK_KEYSTONE_URL - AVAILABLE_REGIONS" +msgid "LOGGING" +msgstr "LOGGING" + msgid "" "Lastly, this code introduces the concept of error handling in horizon. The :" "func:`horizon.exceptions.handle` function is a centralized error handling " @@ -4455,6 +5342,12 @@ msgstr "" "do to make your unit tests as useful, maintainable, and unburdensome as " "possible." +msgid "Lines added to ``horizon/test/jasmine/jasmine_tests.py``:" +msgstr "Lines added to ``horizon/test/jasmine/jasmine_tests.py``:" + +msgid "Lines added to ``openstack_dashboard/enabled/_10_project.py``:" +msgstr "Lines added to ``openstack_dashboard/enabled/_10_project.py``:" + msgid "Linux Systems" msgstr "Linux Systems" @@ -4465,6 +5358,9 @@ msgstr "" "List of scope and rule tuples to do policy checks on, the composition of " "which is (scope, rule)" +msgid "ListOpt" +msgstr "ListOpt" + msgid "Lists names of columns that have required fields." msgstr "Lists names of columns that have required fields." @@ -4703,9 +5599,15 @@ msgstr "" msgid "Method to access whether or not this tab is the active tab." msgstr "Method to access whether or not this tab is the active tab." +msgid "Microversion references" +msgstr "Microversion references" + msgid "Middleware to output operation log." msgstr "Middleware to output operation log." +msgid "Minified JavaScript policy" +msgstr "Minified JavaScript policy" + msgid "Mixin class to allow ModalFormView and WorkflowView together." msgstr "Mixin class to allow ModalFormView and WorkflowView together." @@ -4731,6 +5633,9 @@ msgstr "" msgid "Module Reference" msgstr "Module Reference" +msgid "Module Structure" +msgstr "Module Structure" + msgid "Module defining the Django auth backend class for the Keystone API." msgstr "Module defining the Django auth backend class for the Keystone API." @@ -4743,6 +5648,9 @@ msgstr "Monitor and participate in-channel at #openstack-horizon" msgid "Move on to releasing once you're happy the Horizon changes are stable." msgstr "Move on to releasing once you're happy the Horizon changes are stable." +msgid "MultiStrOpt" +msgstr "MultiStrOpt" + msgid "" "Multiple checks can be made for the same action by merely adding more tuples " "to the list. The policy check will use information stored in the session " @@ -4781,6 +5689,27 @@ msgstr "" "file. A good starting point is to use the example config with the following " "command, from within the ``horizon`` directory." +msgid "" +"No embedded content: The XStatic system helps us avoid embedding files that " +"are already available in the distribution, for example, libjs-* or fonts-* " +"packages. It even provides a compatibility layer for distributions. Not " +"every distribution places static files in the same position in the file " +"system. If you are packaging an XStatic package for your distribution, make " +"sure that you are using the static files provided by that specific " +"distribution. Having put together an XStatic package is *no* guarantee to " +"get it into a distribution. XStatic provides only the abstraction layer to " +"use distribution provided static files." +msgstr "" +"No embedded content: The XStatic system helps us avoid embedding files that " +"are already available in the distribution, for example, libjs-* or fonts-* " +"packages. It even provides a compatibility layer for distributions. Not " +"every distribution places static files in the same position in the file " +"system. If you are packaging an XStatic package for your distribution, make " +"sure that you are using the static files provided by that specific " +"distribution. Having put together an XStatic package is *no* guarantee to " +"get it into a distribution. XStatic provides only the abstraction layer to " +"use distribution provided static files." + msgid "" "No filters or formatting are applied to the returned data. This is useful " "when doing calculations on data in the table." @@ -4806,6 +5735,13 @@ msgstr "" "`horizon.tables.DataTaleOptions.cell_class` are overwritten in this class, " "so setting them in ``Meta`` has no effect." +msgid "" +"Note that ``HORIZON_CONFIG`` is not touched in this step. It will be covered " +"in the next step." +msgstr "" +"Note that ``HORIZON_CONFIG`` is not touched in this step. It will be covered " +"in the next step." + msgid "" "Note that even if the value of one of the ``contributes`` keys is not " "present (e.g. optional) the key should still be added to the context with a " @@ -4943,6 +5879,13 @@ msgstr "" "upper-constraints version so that deployers / packagers who don't honour " "upper-constraints still get compatible versions of the packages." +msgid "" +"Once you have npm available on your system, run ``npm install`` from the " +"horizon root directory." +msgstr "" +"Once you have npm available on your system, run ``npm install`` from the " +"horizon root directory." + msgid "" "Once you've got your table set up the way you like it, the next step is to " "wire it up to a view. To make this as easy as possible Horizon provides the :" @@ -4959,6 +5902,9 @@ msgstr "" msgid "Once you've made your changes, there are a few things to do:" msgstr "Once you've made your changes, there are a few things to do:" +msgid "One folder per component" +msgstr "One folder per component" + msgid "" "One of the most challenging aspects of building a compelling user experience " "is crafting complex multi-part workflows. Horizon's ``workflows`` module " @@ -4968,6 +5914,22 @@ msgstr "" "is crafting complex multi-part workflows. Horizon's ``workflows`` module " "aims to bring that capability within everyday reach." +msgid "" +"Open /jasmine in a browser. The development server can " +"be run with ``tox -e runserver`` from the horizon root directory." +msgstr "" +"Open /jasmine in a browser. The development server can " +"be run with ``tox -e runserver`` from the Horizon root directory." + +msgid "" +"Open /jasmine in a browser. The development server can " +"be run with ``tox -e runserver`` from the horizon root directory; by " +"default, this will run the development server at ``http://localhost:8000``." +msgstr "" +"Open /jasmine in a browser. The development server can " +"be run with ``tox -e runserver`` from the horizon root directory; by " +"default, this will run the development server at ``http://localhost:8000``." + msgid "" "Open the ``dashboard.py`` file again, insert the following code above the " "``Mydashboard`` class. This code defines the ``Mygroup`` class and adds a " @@ -5010,6 +5972,15 @@ msgid "" msgstr "" "Open the ``views.py`` file, the auto-generated code is like the following::" +msgid "" +"OpenStack Dashboard is an example of a Horizon-based Angular application. " +"Other applications built on the Horizon framework can follow a similar " +"structure. It is composed of two key Angular modules:" +msgstr "" +"OpenStack Dashboard is an example of a Horizon-based Angular application. " +"Other applications built on the Horizon framework can follow a similar " +"structure. It is composed of two key Angular modules:" + msgid "" "OpenStack infra scripts assumes translation message catalogs are placed " "under ``/locale`` (for example ``myplugin/locale``)." @@ -5020,6 +5991,9 @@ msgstr "" msgid "OperationLogMiddleware" msgstr "OperationLogMiddleware" +msgid "Opt classes defined in oslo.config are used as much as possible." +msgstr "Opt classes defined in oslo.config are used as much as possible." + msgid "" "Optional location to redirect after completion of the delete action. " "Defaults to the current page." @@ -5067,6 +6041,21 @@ msgstr "" msgid "Otherwise renders the response as normal." msgstr "Otherwise renders the response as normal." +msgid "" +"Our Karma setup includes a plugin to generate test coverage reports. When " +"developing, be sure to check the coverage reports on the master branch and " +"compare your development branch; this will help identify missing tests." +msgstr "" +"Our Karma setup includes a plugin to generate test coverage reports. When " +"developing, be sure to check the coverage reports on the master branch and " +"compare your development branch; this will help identify missing tests." + +msgid "Outputs Horizons documentation as HTML to ``doc/build/html``." +msgstr "Outputs Horizons documentation as HTML to ``doc/build/html``." + +msgid "Outputs Horizons release notes as HTML to ``releasenotes/build/html``." +msgstr "Outputs Horizons release notes as HTML to ``releasenotes/build/html``." + msgid "Override to modify an incoming obj_id to match existing API." msgstr "Override to modify an incoming obj_id to match existing API." @@ -5079,6 +6068,21 @@ msgstr "Override to separate rows into categories." msgid "Overview and Architecture" msgstr "Overview and Architecture" +msgid "" +"Package build systems are disconnected from the outside network (for several " +"reasons). Other packaging systems download dependencies directly from the " +"internet without verifying that the downloaded file is intact, matches a " +"provided checksum, etc. With these other systems, there is no way to provide " +"a mirror, a proxy or a cache, making builds even more unstable when minor " +"networking issues are encountered." +msgstr "" +"Package build systems are disconnected from the outside network (for several " +"reasons). Other packaging systems download dependencies directly from the " +"internet without verifying that the downloaded file is intact, matches a " +"provided checksum, etc. With these other systems, there is no way to provide " +"a mirror, a proxy or a cache, making builds even more unstable when minor " +"networking issues are encountered." + msgid "" "Package the library as an xstatic package by following the instructions in " "xstatic documentation_. Install the xstatic-release_ script and follow the " @@ -5094,6 +6098,9 @@ msgstr "Packaging Horizon" msgid "Packaging Horizon for distributions" msgstr "Packaging Horizon for distributions" +msgid "Packaging Software" +msgstr "Packaging Software" + msgid "Panel" msgstr "Panel" @@ -5164,6 +6171,24 @@ msgstr "Perform component can_access check to access the view." msgid "Performs user authentication check." msgstr "Performs user authentication check." +msgid "" +"Place the following content into ``devstack/local.conf`` to start the " +"services that Horizon supports in DevStack when ``stack.sh`` is run. If you " +"need to use this with a stable branch you need to add ``stable/`` to the end of each ``enable_plugin`` line (e.g. ``stable/mitaka``). " +"You can also check out DevStack using a stable branch tag. For more " +"information on DevStack, see https://docs.openstack.org/devstack/latest/" +msgstr "" +"Place the following content into ``devstack/local.conf`` to start the " +"services that Horizon supports in DevStack when ``stack.sh`` is run. If you " +"need to use this with a stable branch you need to add ``stable/`` to the end of each ``enable_plugin`` line (e.g. ``stable/mitaka``). " +"You can also check out DevStack using a stable branch tag. For more " +"information on DevStack, see https://docs.openstack.org/devstack/latest/" + +msgid "Planned Steps" +msgstr "Planned Steps" + msgid "" "Please don't re-open tickets closed by a core developer. If you disagree " "with the decision on the ticket, the appropriate solution is to take it up " @@ -5184,6 +6209,9 @@ msgstr "" "also include contributing to the design documents discussed at the design " "sessions." +msgid "Plugins" +msgstr "Plugins" + msgid "Plugins that create new panels or dashboards" msgstr "Plugins that create new panels or dashboards" @@ -5369,6 +6397,15 @@ msgstr "" msgid "Recommended" msgstr "Recommended" +msgid "" +"Red Hat, Debian, and SUSE distributions are made only of free software (free " +"as in Libre, or free speech). The software that we include in our repository " +"is free. The tools are also free, and available in the distribution." +msgstr "" +"Red Hat, Debian, and SUSE distributions are made only of free software (free " +"as in Libre, or free speech). The software that we include in our repository " +"is free. The tools are also free, and available in the distribution." + msgid "Reduce the small/random ``