summaryrefslogtreecommitdiff
path: root/docs/_locale/de_DE/LC_MESSAGES/contributing/development.po
diff options
context:
space:
mode:
authorrebortg <github@ghlr.de>2022-10-24 20:49:12 +0200
committerrebortg <github@ghlr.de>2022-10-24 20:49:12 +0200
commit99ccd5cd0e0ac2efdc50f3eda88744601a0a996a (patch)
treecd08da26447517eef3c0d7e14b08313108199f26 /docs/_locale/de_DE/LC_MESSAGES/contributing/development.po
parent214bb78660e10ca210e1117340497c9c2de3a9d6 (diff)
downloadvyos-documentation-99ccd5cd0e0ac2efdc50f3eda88744601a0a996a.tar.gz
vyos-documentation-99ccd5cd0e0ac2efdc50f3eda88744601a0a996a.zip
add german test translation
Diffstat (limited to 'docs/_locale/de_DE/LC_MESSAGES/contributing/development.po')
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/contributing/development.po1019
1 files changed, 1019 insertions, 0 deletions
diff --git a/docs/_locale/de_DE/LC_MESSAGES/contributing/development.po b/docs/_locale/de_DE/LC_MESSAGES/contributing/development.po
new file mode 100644
index 00000000..b92c397b
--- /dev/null
+++ b/docs/_locale/de_DE/LC_MESSAGES/contributing/development.po
@@ -0,0 +1,1019 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2021, VyOS maintainers and contributors
+# This file is distributed under the same license as the VyOS package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: VyOS 1.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-21 12:01+0200\n"
+"PO-Revision-Date: 2022-10-21 10:04+0000\n"
+"Language-Team: German (Germany) (https://www.transifex.com/vyos/teams/155110/de_DE/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de_DE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../../contributing/development.rst:5 13f6a7fcaf664b70b688682893ae0e83
+msgid "Development"
+msgstr ""
+
+#: ../../contributing/development.rst:7 bca53b364a914bce877b500ae541ff18
+msgid ""
+"All VyOS source code is hosted on GitHub under the VyOS organization which "
+"can be found here: https://github.com/vyos"
+msgstr ""
+
+#: ../../contributing/development.rst:10 33a075fffdd64ce491df5c96ef021c4f
+msgid ""
+"Our code is split into several modules. VyOS is composed of multiple "
+"individual packages, some of them are forks of upstream packages and are "
+"periodically synced with upstream, so keeping the whole source under a "
+"single repository would be very inconvenient and slow. There is now an "
+"ongoing effort to consolidate all VyOS-specific framework/config packages "
+"into vyos-1x package, but the basic structure is going to stay the same, "
+"just with fewer and fewer packages while the base code is rewritten from "
+"Perl/BASH into Python using and XML based interface definition for the CLI."
+msgstr ""
+
+#: ../../contributing/development.rst:19 495a976e071d4dd69db319e18c61b25c
+msgid ""
+"The repository that contains all the ISO build scripts is: "
+"https://github.com/vyos/vyos-build"
+msgstr ""
+
+#: ../../contributing/development.rst:22 89dd9bf9c5ee41e19e60ab3f5da1a8bc
+msgid ""
+"The README.md file will guide you to use the this top level repository."
+msgstr ""
+
+#: ../../contributing/development.rst:25 6e4a1b07b19e4427befa188a40f6a904
+msgid "Submit a Patch"
+msgstr ""
+
+#: ../../contributing/development.rst:27 0f4667f35277442aaaae849d2e67af0d
+msgid ""
+"Patches are always more than welcome. To have a clean and easy to maintain "
+"repository we have some guidelines when working with Git. A clean repository"
+" eases the automatic generation of a changelog file."
+msgstr ""
+
+#: ../../contributing/development.rst:31 6132f60414b14d07be6626db55d39c96
+msgid ""
+"A good approach for writing commit messages is actually to have a look at "
+"the file(s) history by invoking ``git log path/to/file.txt``."
+msgstr ""
+
+#: ../../contributing/development.rst:37 c5541522f1854c0a89696d4bdac27d43
+msgid "Prepare patch/commit"
+msgstr ""
+
+#: ../../contributing/development.rst:39 567f89dd00c545d3b940d01e0240f85c
+msgid ""
+"In a big system, such as VyOS, that is comprised of multiple components, "
+"it's impossible to keep track of all the changes and bugs/feature requests "
+"in one's head. We use a bugtracker known as Phabricator_ for it (\"issue "
+"tracker\" would be a better term, but this one stuck)."
+msgstr ""
+
+#: ../../contributing/development.rst:44 4c02c609c4364dcbaf99318a1b0de8e5
+msgid "The information is used in three ways:"
+msgstr ""
+
+#: ../../contributing/development.rst:46 182bf37a0da641da9e72c341a930313e
+msgid ""
+"Keep track of the progress (what we've already done in this branch and what "
+"we still need to do)."
+msgstr ""
+
+#: ../../contributing/development.rst:49 3441bca232f341cd9fd36ded1b8a7d9a
+msgid "Prepare release notes for upcoming releases"
+msgstr ""
+
+#: ../../contributing/development.rst:51 dd91874c6e484dffbb9f007186e77068
+msgid ""
+"Help future maintainers of VyOS (it could be you!) to find out why certain "
+"things have been changed in the codebase or why certain features have been "
+"added"
+msgstr ""
+
+#: ../../contributing/development.rst:55 3d262f62e2824207a5336028aacbb014
+msgid ""
+"To make this approach work, every change must be associated with a task "
+"number (prefixed with **T**) and a component. If there is no bug "
+"report/feature request for the changes you are going to make, you have to "
+"create a Phabricator_ task first. Once there is an entry in Phabricator_, "
+"you should reference its id in your commit message, as shown below:"
+msgstr ""
+
+#: ../../contributing/development.rst:61 47e4acaf426145008b6fd8ab91bd82fa
+msgid "``ddclient: T1030: auto create runtime directories``"
+msgstr ""
+
+#: ../../contributing/development.rst:62 3c338c90678541c591296fd27890f079
+msgid "``Jenkins: add current Git commit ID to build description``"
+msgstr ""
+
+#: ../../contributing/development.rst:64 c7830178939b4a0189fcc2f20822ebd3
+msgid ""
+"If there is no Phabricator_ reference in the commits of your pull request, "
+"we have to ask you to amend the commit message. Otherwise we will have to "
+"reject it."
+msgstr ""
+
+#: ../../contributing/development.rst:69 ed8e41d2420a401092165cce77771c92
+msgid "Writing good commit messages"
+msgstr ""
+
+#: ../../contributing/development.rst:71 84ed04eae60d4146ae29846f909fcd4c
+msgid ""
+"The format should be and is inspired by: https://git-scm.com/book/ch5-2.html"
+" It is also worth reading https://chris.beams.io/posts/git-commit/"
+msgstr ""
+
+#: ../../contributing/development.rst:74 a534e6ffa0414c95943fd95381621982
+msgid ""
+"A single, short, summary of the commit (recommended 50 characters or less, "
+"not exceeding 80 characters) containing a prefix of the changed component "
+"and the corresponding Phabricator_ reference e.g. ``snmp: T1111:`` or "
+"``ethernet: T2222:`` - multiple components could be concatenated as in "
+"``snmp: ethernet: T3333``"
+msgstr ""
+
+#: ../../contributing/development.rst:80 6b72dc852a05479b82e4682f7aa54cba
+msgid ""
+"In some contexts, the first line is treated as the subject of an email and "
+"the rest of the text as the body. The blank line separating the summary from"
+" the body is critical (unless you omit the body entirely); tools like rebase"
+" can get confused if you run the two together."
+msgstr ""
+
+#: ../../contributing/development.rst:85 f5af85d4f0434ac6acb2329942d002e8
+msgid "Followed by a message which describes all the details like:"
+msgstr ""
+
+#: ../../contributing/development.rst:87 5770782710354b32a60879e0166ef185
+msgid ""
+"What/why/how something has been changed, makes everyone's life easier when "
+"working with `git bisect`"
+msgstr ""
+
+#: ../../contributing/development.rst:90 d409491e1b0b4fa1b7786c2353c56400
+msgid ""
+"All text of the commit message should be wrapped at 72 characters if "
+"possible which makes reading commit logs easier with ``git log`` on a "
+"standard terminal (which happens to be 80x25)"
+msgstr ""
+
+#: ../../contributing/development.rst:94 7aaf86fe66e8470584b71ef895e7a273
+msgid ""
+"If applicable a reference to a previous commit should be made linking those "
+"commits nicely when browsing the history: ``After commit abcd12ef (\"snmp: "
+"this is a headline\") a Python import statement is missing, throwing the "
+"following exception: ABCDEF``"
+msgstr ""
+
+#: ../../contributing/development.rst:99 1ea5d06d73934128aa343519d5697279
+msgid ""
+"Always use the ``-x`` option to the ``git cherry-pick`` command when back or"
+" forward porting an individual commit. This automatically appends the line: "
+"``(cherry picked from commit <ID>)`` to the original authors commit message "
+"making it easier when bisecting problems."
+msgstr ""
+
+#: ../../contributing/development.rst:104 b8149340cde0423fbd040efaab204019
+msgid ""
+"Every change set must be consistent (self containing)! Do not fix multiple "
+"bugs in a single commit. If you already worked on multiple fixes in the same"
+" file use `git add --patch` to only add the parts related to the one issue "
+"into your upcoming commit."
+msgstr ""
+
+#: ../../contributing/development.rst:109 5ef784f4960e4a82a5bddaa415944c61
+msgid "Limits:"
+msgstr ""
+
+#: ../../contributing/development.rst:111 112a6d6a4c8c4d32b0e052cf60e26573
+msgid ""
+"We only accept bugfixes in packages other than "
+"https://github.com/vyos/vyos-1x as no new functionality should use the old "
+"style templates (``node.def`` and Perl/BASH code. Use the new style "
+"XML/Python interface instead."
+msgstr ""
+
+#: ../../contributing/development.rst:115 b0bb964fb0764e2f9f958335ea287868
+msgid ""
+"Please submit your patches using the well-known GitHub pull-request against "
+"our repositories found in the VyOS GitHub organisation at "
+"https://github.com/vyos"
+msgstr ""
+
+#: ../../contributing/development.rst:120 c38eca26eca14a4daf60ac8dc815cc5b
+msgid "Determinine source package"
+msgstr ""
+
+#: ../../contributing/development.rst:122 3ac68249f169449ebffe37b33abac85a
+msgid ""
+"Suppose you want to make a change in the webproxy script but yet you do not "
+"know which of the many VyOS packages ship this file. You can determine the "
+"VyOS package name in question by using Debian's ``dpkg -S`` command of your "
+"running VyOS installation."
+msgstr ""
+
+#: ../../contributing/development.rst:132 09de05f3b665422cab77b5808e5b2585
+msgid ""
+"This means the file in question (``/opt/vyatta/sbin/vyatta-update-"
+"webproxy.pl``) is located in the ``vyatta-webproxy`` package which can be "
+"found here: https://github.com/vyos/vyatta-webproxy"
+msgstr ""
+
+#: ../../contributing/development.rst:138 abf1cbb03527490db9d36348be3f9fb7
+msgid "Fork Repository and submit Patch"
+msgstr ""
+
+#: ../../contributing/development.rst:140 cf2f695e771e4da7afcbe7f4e6be4764
+msgid ""
+"Forking the repository and submitting a GitHub pull-request is the preferred"
+" way of submitting your changes to VyOS. You can fork any VyOS repository to"
+" your very own GitHub account by just appending ``/fork`` to any "
+"repository's URL on GitHub. To e.g. fork the ``vyos-1x`` repository, open "
+"the following URL in your favourite browser: "
+"https://github.com/vyos/vyos-1x/fork"
+msgstr ""
+
+#: ../../contributing/development.rst:146 47d1dec79b274c96bae18c564fffc8d4
+msgid ""
+"You then can proceed with cloning your fork or add a new remote to your "
+"local repository:"
+msgstr ""
+
+#: ../../contributing/development.rst:149 473607ea52524136bd35ff89877b461d
+msgid "Clone: ``git clone https://github.com/<user>/vyos-1x.git``"
+msgstr ""
+
+#: ../../contributing/development.rst:151 eb23e4735532454a812e977f4e1f64e0
+msgid "Fork: ``git remote add myfork https://github.com/<user>/vyos-1x.git``"
+msgstr ""
+
+#: ../../contributing/development.rst:153 51a8dee2722546f5a1a8b841bf0d47d1
+msgid ""
+"In order to record you as the author of the fix please identify yourself to "
+"Git by setting up your name and email. This can be done local for this one "
+"and only repository ``git config`` or globally using ``git config "
+"--global``."
+msgstr ""
+
+#: ../../contributing/development.rst:162 08945358e29443e1b768547e707f4dff
+msgid ""
+"Make your changes and save them. Do the following for all changes files to "
+"record them in your created Git commit:"
+msgstr ""
+
+#: ../../contributing/development.rst:165 be8ecf3e5c9242b0be78f476cb82ca8f
+msgid ""
+"Add file to Git index using ``git add myfile``, or for a whole directory: "
+"``git add somedir/*``"
+msgstr ""
+
+#: ../../contributing/development.rst:168 29625b4d7af94c28a91c85596b4cb1de
+msgid ""
+"Commit the changes by calling ``git commit``. Please use a meaningful commit"
+" headline (read above) and don't forget to reference the Phabricator_ ID."
+msgstr ""
+
+#: ../../contributing/development.rst:171 48466af0f86c48b096143233ded58de4
+msgid "Submit the patch ``git push`` and create the GitHub pull-request."
+msgstr ""
+
+#: ../../contributing/development.rst:175 36bcc1288264449a8bad68f6e2565f80
+msgid "Attach patch to Phabricator task"
+msgstr ""
+
+#: ../../contributing/development.rst:177 ae16033e6e7c4914aa0406204a1591f5
+msgid ""
+"Follow the above steps on how to \"Fork repository to submit a Patch\". "
+"Instead of uploading \"pushing\" your changes to GitHub you can export the "
+"patches/ commits and send it to maintainers@vyos.net or attach it directly "
+"to the bug (preferred over email)"
+msgstr ""
+
+#: ../../contributing/development.rst:182 6fe17a5c6e0f48ca809ad82aaab5d704
+msgid ""
+"Export last commit to patch file: ``git format-patch`` or export the last "
+"two commits into its appropriate patch files: ``git format-patch -2``"
+msgstr ""
+
+#: ../../contributing/development.rst:187 7200a007c67c4e238e709557dcea986a
+msgid "Coding Guidelines"
+msgstr ""
+
+#: ../../contributing/development.rst:189 962d647556e8434c93a1e524737691c2
+msgid ""
+"Like any other project we have some small guidelines about our source code, "
+"too. The rules we have are not there to punish you - the rules are in place "
+"to help us all. By having a consistent coding style it becomes very easy for"
+" new and also longtime contributors to navigate through the sources and all "
+"the implied logic of any one source file.."
+msgstr ""
+
+#: ../../contributing/development.rst:195 8702ba3737a94b18902caf95e9c3f75e
+msgid ""
+"Python 3 **shall** be used. How long can we keep Python 2 alive anyway? No "
+"considerations for Python 2 compatibility **should** be taken at any time."
+msgstr ""
+
+#: ../../contributing/development.rst:200 bf829c06036e44e29a94a0109251e344
+msgid "Formatting"
+msgstr ""
+
+#: ../../contributing/development.rst:202 c3cbbf35ce07497ca96a4c1e1a543730
+msgid ""
+"Python: Tabs **shall not** be used. Every indentation level should be 4 "
+"spaces"
+msgstr ""
+
+#: ../../contributing/development.rst:203 0edd04481e594ff09ee893c010cd881e
+msgid ""
+"XML: Tabs **shall not** be used. Every indentation level should be 2 spaces"
+msgstr ""
+
+#: ../../contributing/development.rst:205 f201706450d645999e1edd4c2558bce9
+msgid ""
+"There are extensions to e.g. VIM (xmllint) which will help you to get your "
+"indention levels correct. Add to following to your .vimrc file: ``au "
+"FileType xml setlocal equalprg=xmllint\\ --format\\ --recover\\ -\\ "
+"2>/dev/null`` now you can call the linter using ``gg=G`` in command mode."
+msgstr ""
+
+#: ../../contributing/development.rst:212 660e9fc0c3ab489392b6ec6ab967a33b
+msgid "Text generation"
+msgstr ""
+
+#: ../../contributing/development.rst:214 a46c47306cf44f3fa51fb0e183d33d60
+msgid ""
+"Template processor **should** be used for generating config files. Built-in "
+"string formatting **may** be used for simple line-oriented formats where "
+"every line is self-contained, such as iptables rules. Template processor "
+"**must** be used for structured, multi-line formats such as those used by "
+"ISC DHCPd."
+msgstr ""
+
+#: ../../contributing/development.rst:219 f97220818b4f4d38bc701b54beb1f26e
+msgid "The default template processor for VyOS code is Jinja2_."
+msgstr ""
+
+#: ../../contributing/development.rst:223 c70da7d925ae4993834091de6a0dc12b
+msgid "Summary"
+msgstr ""
+
+#: ../../contributing/development.rst:225 cc3153e1c9bf4429ae228461552f1b13
+msgid ""
+"When modifying the source code, remember these rules of the legacy "
+"elimination campaign:"
+msgstr ""
+
+#: ../../contributing/development.rst:228 d65f761886d94c4486c6286959ae4bb1
+msgid "No new features in Perl"
+msgstr ""
+
+#: ../../contributing/development.rst:229 b551d79de6b34b199e66e99ac128e3e2
+msgid "No old style command definitions"
+msgstr ""
+
+#: ../../contributing/development.rst:230 52734945788945b69e2fe8834950a01c
+msgid "No code incompatible with Python3"
+msgstr ""
+
+#: ../../contributing/development.rst:234 c9418116422b4b579870438fdd2830d6
+msgid "Python"
+msgstr ""
+
+#: ../../contributing/development.rst:236 ec8641ba5d0d4d9980b63b5d9e90345d
+msgid ""
+"The switch to the Python programming language for new code is not merely a "
+"change of the language, but a chance to rethink and improve the programming "
+"approach."
+msgstr ""
+
+#: ../../contributing/development.rst:240 53852f2af01f40039b618f0bd0dec169
+msgid ""
+"Let's face it: VyOS is full of spaghetti code where logic for reading the "
+"VyOS config, generating daemon configs, and restarting processes is all "
+"mixed up."
+msgstr ""
+
+#: ../../contributing/development.rst:243 15a4a1df6d5c466889aebfed7616c29f
+msgid ""
+"Python (or any other language, for that matter) does not provide automatic "
+"protection from bad design, so we need to also devise design guidelines and "
+"follow them to keep the system extensible and maintainable."
+msgstr ""
+
+#: ../../contributing/development.rst:247 b444574c9f1f48d79335a6a87f6289d1
+msgid ""
+"But we are here to assist you and want to guide you through how you can "
+"become a good VyOS contributor. The rules we have are not there to punish "
+"you - the rules are in place to help us all. What does it mean? By having a "
+"consistent coding style it becomes very easy for new contributors and also "
+"longtime contributors to navigate through the sources and all the implied "
+"logic of the spaghetti code."
+msgstr ""
+
+#: ../../contributing/development.rst:254 5177502a9cd44b96beca39366de4eb20
+msgid ""
+"Please use the following template as good starting point when developing new"
+" modules or even rewrite a whole bunch of code in the new style XML/Pyhon "
+"interface."
+msgstr ""
+
+#: ../../contributing/development.rst:260 26aa43f8ad9e4dbdbdfaa474e66358f8
+msgid "Configuration Script Structure and Behaviour"
+msgstr ""
+
+#: ../../contributing/development.rst:262 2c7cb8e45c9e4ad990aa8e0961958d81
+msgid ""
+"Your configuration script or operation mode script which is also written in "
+"Python3 should have a line break on 80 characters. This seems to be a bit "
+"odd nowadays but as some people also work remotely or program using vi(m) "
+"this is a fair good standard which I hope we can rely on."
+msgstr ""
+
+#: ../../contributing/development.rst:267 83c054697c564ea78e266afd9ea4d371
+msgid ""
+"In addition this also helps when browsing the GitHub codebase on a mobile "
+"device if you happen to be a crazy scientist."
+msgstr ""
+
+#: ../../contributing/development.rst:328 2a7679b8b46543ff801735bf23a2b6a2
+msgid ""
+"The ``get_config()`` function must convert the VyOS config to an abstract, "
+"internal representation. No other function is allowed to call the "
+"``vyos.config. Config`` object method directly. The rationale for it is that"
+" when config reads are mixed with other logic, it's very hard to change the "
+"config syntax since you need to weed out every occurrence of the old syntax."
+" If syntax-specific code is confined to a single function, the rest of the "
+"code can be left untouched as long as the internal representation remains "
+"compatible."
+msgstr ""
+
+#: ../../contributing/development.rst:336 6da990d2f8104f1289c1b08c6add7c7a
+msgid ""
+"Another advantage is testability of the code. Mocking the entire config "
+"subsystem is hard, while constructing an internal representation by hand is "
+"way simpler."
+msgstr ""
+
+#: ../../contributing/development.rst:340 7e64a2d3f8104a778f29a4017feddc41
+msgid ""
+"The ``verify()`` function takes your internal representation of the config "
+"and checks if it's valid, otherwise it must raise ``ConfigError`` with an "
+"error message that describes the problem and possibly suggests how to fix "
+"it. It must not make any changes to the system. The rationale for it is "
+"again testability and, in the future when the config backend is ready and "
+"every script is rewritten in this fashion, ability to execute commit dry run"
+" (\"commit test\" like in JunOS) and abort commit before making any changes "
+"to the system if an error is found in any component."
+msgstr ""
+
+#: ../../contributing/development.rst:349 bd667197d6bf44adbcc9eeae47406de5
+msgid ""
+"The ``generate()`` function generates config files for system components."
+msgstr ""
+
+#: ../../contributing/development.rst:351 e8d9af1c502e437ba433f3687ffd7ae0
+msgid ""
+"The ``apply()`` function applies the generated configuration to the live "
+"system. It should use non-disruptive reload whenever possible. It may "
+"execute disruptive operations such as daemon process restart if a particular"
+" component does not support non-disruptive reload, or when the expected "
+"service degradation is minimal (for example, in case of auxiliary services "
+"such as LLDPd). In case of high impact services such as VPN daemon and "
+"routing protocols, when non- disruptive reload is supported for some but not"
+" all types of configuration changes, scripts authors should make effort to "
+"determine if a configuration change can be done in a non-disruptive way and "
+"only resort to disruptive restart if it cannot be avoided."
+msgstr ""
+
+#: ../../contributing/development.rst:362 976cb9f3d9814554b2d10496826e3078
+msgid ""
+"Unless absolutely necessary, configuration scripts should not modify the "
+"active configuration of system components directly. Whenever at all "
+"possible, scripts should generate a configuration file or files that can be "
+"applied with a single command such as reloading a service through systemd "
+"init. Inserting statements one by one is particularly discouraged, for "
+"example, when configuring netfilter rules, saving them to a file and loading"
+" it with iptables-restore should always be preferred to executing iptables "
+"directly."
+msgstr ""
+
+#: ../../contributing/development.rst:370 6fe2ed80e6804a4e922703668c95efb8
+msgid ""
+"The ``apply()`` and ``generate()`` functions may ``raise ConfigError`` if, "
+"for example, the daemon failed to start with the updated config. It "
+"shouldn't be a substitute for proper config checking in the ``verify()`` "
+"function. All reasonable effort should be made to verify that generated "
+"configuration is valid and will be accepted by the daemon, including, when "
+"necessary, cross- checks with other VyOS configuration subtrees."
+msgstr ""
+
+#: ../../contributing/development.rst:377 f1efcf352ca74fd99b34a443c1d086ad
+msgid ""
+"Exceptions, including ``VyOSError`` (which is raised by "
+"``vyos.config.Config`` on improper config operations, such as trying to use "
+"``list_nodes()`` on a non-tag node) should not be silenced or caught and re-"
+"raised as config error. Sure this will not look pretty on user's screen, but"
+" it will make way better bug reports, and help users (and most VyOS users "
+"are IT professionals) do their own debugging as well."
+msgstr ""
+
+#: ../../contributing/development.rst:384 0c989b22ba6341049eeff36f354faabb
+msgid ""
+"For easy orientation we suggest you take a look on the ``ntp.py`` or "
+"``interfaces-bonding.py`` (for tag nodes) implementation. Both files can be "
+"found in the vyos-1x_ repository."
+msgstr ""
+
+#: ../../contributing/development.rst:390 753ac897e3044181977a217d93c293dd
+msgid "XML (used for CLI definitions)"
+msgstr ""
+
+#: ../../contributing/development.rst:392 80257fc611834dbba73ec93a5e12124a
+msgid ""
+"The bash (or better vbash) completion in VyOS is defined in *templates*. "
+"Templates are text files (called ``node.def``) stored in a directory tree. "
+"The directory names define the command names, and template files define the "
+"command behaviour. Before VyOS 1.2 (crux) this files were created by hand. "
+"After a complex redesign process_ the new style template are automatically "
+"generated from a XML input file."
+msgstr ""
+
+#: ../../contributing/development.rst:399 b957e501d42942e4a5002cafeead50e9
+msgid ""
+"XML interface definitions for VyOS come with a RelaxNG schema and are "
+"located in the vyos-1x_ module. This schema is a slightly modified schema "
+"from VyConf_ alias VyOS 2.0 So VyOS 1.2.x interface definitions will be "
+"reusable in Nextgen VyOS Versions with very minimal changes."
+msgstr ""
+
+#: ../../contributing/development.rst:404 87ee6c860692439c85189b514a35064a
+msgid ""
+"The great thing about schemas is not only that people can know the complete "
+"grammar for certain, but also that it can be automatically verified. The "
+"`scripts/build-command-templates` script that converts the XML definitions "
+"to old style templates also verifies them against the schema, so a bad "
+"definition will cause the package build to fail. I do agree that the format "
+"is verbose, but there is no other format now that would allow this. Besides,"
+" a specialized XML editor can alleviate the issue with verbosity."
+msgstr ""
+
+#: ../../contributing/development.rst:412 8ddcf1750176485fa0d58071eadd993e
+msgid "Example:"
+msgstr ""
+
+#: ../../contributing/development.rst:490 ecb47c0f1ea9452c842c08e7975d1d9a
+msgid ""
+"Command definitions are purely declarative, and cannot contain any logic. "
+"All logic for generating config files for target applications, restarting "
+"services and so on is implemented in configuration scripts instead."
+msgstr ""
+
+#: ../../contributing/development.rst:495 cc22cb46c89c4de19ffb0afb032c3fdb
+msgid "GNU Preprocessor"
+msgstr ""
+
+#: ../../contributing/development.rst:497 b7e5943f25fb40f3912acaaf54f35334
+msgid ""
+"XML interface definition files use the `xml.in` file extension which was "
+"implemented in :vytask:`T1843`. XML interface definitions tend to have a lot"
+" of duplicated code in areas such as:"
+msgstr ""
+
+#: ../../contributing/development.rst:501 ab255f82577842e68117818cf6ebbaeb
+msgid "VIF (incl. VIF-S/VIF-C)"
+msgstr ""
+
+#: ../../contributing/development.rst:502 b0107af78f194974882efa229e16d549
+msgid "Address"
+msgstr ""
+
+#: ../../contributing/development.rst:503 5e420ecfba134a6c95ee6263a33862c9
+msgid "Description"
+msgstr ""
+
+#: ../../contributing/development.rst:504 8460407ee3f9477ebcc971d5c2ced47d
+msgid "Enabled/Disabled"
+msgstr ""
+
+#: ../../contributing/development.rst:506 8610850201c44d678df80cdbb4effc51
+msgid ""
+"Instead of supplying all those XML nodes multiple times there are now "
+"include files with predefined features. Brief overview:"
+msgstr ""
+
+#: ../../contributing/development.rst:509 36a0a931d83a45829cc8ecc9b09cc96a
+msgid "`IPv4, IPv6 and DHCP(v6)`_ address assignment"
+msgstr ""
+
+#: ../../contributing/development.rst:510 def3132d1e21443c85b21dd1fa2f3e6a
+msgid "`IPv4, IPv6`_ address assignment"
+msgstr ""
+
+#: ../../contributing/development.rst:511 61ce6f0a4cb3462d8bc48d384b506913
+msgid "`VLAN (VIF)`_ definition"
+msgstr ""
+
+#: ../../contributing/development.rst:512 781e8c44179a431da25e8fe060a04080
+msgid "`MAC address`_ assignment"
+msgstr ""
+
+#: ../../contributing/development.rst:514 067bc714fc1a45de9fcc0a5b009b9d90
+msgid ""
+"All interface definition XML input files (.in suffix) will be sent to the "
+"GCC preprocess and the output is stored in the `build/interface-definitions`"
+" folder. The previously mentioned `scripts/build-command-templates` script "
+"operates on the `build/interface-definitions` folder to generate all "
+"required CLI nodes."
+msgstr ""
+
+#: ../../contributing/development.rst:535 9be60615915942eeaf9a1e0b049eaf27
+msgid "Guidelines"
+msgstr ""
+
+#: ../../contributing/development.rst:538 14786773fcee449da1c62ba5c1a64a0a
+msgid "Use of numbers"
+msgstr ""
+
+#: ../../contributing/development.rst:540 da524dea88274a22832af93181402987
+msgid ""
+"Use of numbers in command names **should** be avoided unless a number is a "
+"part of a protocol name or similar. Thus, ``protocols ospfv3`` is perfectly "
+"fine, but something like ``server-1`` is questionable at best."
+msgstr ""
+
+#: ../../contributing/development.rst:545 8aa1c3880cfc40a3bc1eab5426951cc7
+msgid "Help String"
+msgstr ""
+
+#: ../../contributing/development.rst:547 b5fe3cf51bdc4504a9f20d93a02ffb21
+msgid ""
+"To ensure uniform look and feel, and improve readability, we should follow a"
+" set of guidelines consistently."
+msgstr ""
+
+#: ../../contributing/development.rst:551 346e85e9486045c086a92ba1ff4064a6
+msgid "Capitalization and punctuation"
+msgstr ""
+
+#: ../../contributing/development.rst:553 5f17c826c42e4d878388bcef714cd361
+msgid ""
+"The first word of every help string **must** be capitalized. There **must "
+"not** be a period at the end of help strings."
+msgstr ""
+
+#: ../../contributing/development.rst:556 32aebf2319834080a10eb82c4fa3eb5b
+msgid ""
+"Rationale: this seems to be the unwritten standard in network device CLIs, "
+"and a good aesthetic compromise."
+msgstr ""
+
+#: ../../contributing/development.rst:559
+#: ../../contributing/development.rst:571
+#: ../../contributing/development.rst:580
+#: ../../contributing/development.rst:591
+#: ../../contributing/development.rst:602
+#: ../../contributing/development.rst:616 b658373b852b4a609c0134af02aa0c2e
+#: b020e944556843c0be34cfa715d51f75 55720daa53754cd992e6a7188b3c98b1
+#: 21c7e859df8f46429e239198ece35d81 3e50eb2086654ad99a7fe20d247d5bd6
+#: fef35b651890497090c26be05c88d465
+msgid "Examples:"
+msgstr ""
+
+#: ../../contributing/development.rst:561 cd0282b12e1547b48638e9b97e797bba
+msgid "Good: \"Frobnication algorithm\""
+msgstr ""
+
+#: ../../contributing/development.rst:562 24a84860978448649189947b280a8e70
+msgid "Bad: \"frobnication algorithm\""
+msgstr ""
+
+#: ../../contributing/development.rst:563 af8d7ef416ab47dc8b6dc2bde95fb3e9
+msgid "Bad: \"Frobnication algorithm.\""
+msgstr ""
+
+#: ../../contributing/development.rst:564 f160d2d45016433aaa5e3fbd609c3558
+msgid "Horrible: \"frobnication algorithm.\""
+msgstr ""
+
+#: ../../contributing/development.rst:567 40e524d8fd2c49d7b34bb899ae644116
+msgid "Use of abbreviations and acronyms"
+msgstr ""
+
+#: ../../contributing/development.rst:569 50af60e0123b458e9fed80ea7be1076c
+msgid "Abbreviations and acronyms **must** be capitalized."
+msgstr ""
+
+#: ../../contributing/development.rst:573
+#: ../../contributing/development.rst:604 b0946251124045b6bf97ae3875f948e2
+#: 6a299471787141aaa3a108e2a48f59b1
+msgid "Good: \"TCP connection timeout\""
+msgstr ""
+
+#: ../../contributing/development.rst:574 8372511294954ee881facc029cdafcb2
+msgid "Bad: \"tcp connection timeout\""
+msgstr ""
+
+#: ../../contributing/development.rst:575 01429f1227664923acf4a6f149c63e45
+msgid "Horrible: \"Tcp connection timeout\""
+msgstr ""
+
+#: ../../contributing/development.rst:577 a7f34af1c0154c989e3375aa460e337a
+msgid ""
+"Acronyms also **must** be capitalized to visually distinguish them from "
+"normal words:"
+msgstr ""
+
+#: ../../contributing/development.rst:582 243ffd888b2f4f839b4ce6c6bbbe8ced
+msgid "Good: RADIUS (as in remote authentication for dial-in user services)"
+msgstr ""
+
+#: ../../contributing/development.rst:583 d9536a7cef704f19806ff14f207fe5a3
+msgid ""
+"Bad: radius (unless it's about the distance between a center of a circle and"
+" any of its points)"
+msgstr ""
+
+#: ../../contributing/development.rst:586 598992d29c3948ce8b9daf8136ef6f3e
+msgid ""
+"Some abbreviations are traditionally written in mixed case. Generally, if it"
+" contains words \"over\" or \"version\", the letter **should** be lowercase."
+" If there's an accepted spelling (especially if defined by an RFC or another"
+" standard), it **must** be followed."
+msgstr ""
+
+#: ../../contributing/development.rst:593 27c7117975c041fdaf4e23e9f07dd527
+msgid "Good: PPPoE, IPsec"
+msgstr ""
+
+#: ../../contributing/development.rst:594 88c045836ff14ecba67f923acfdb69b2
+msgid "Bad: PPPOE, IPSEC"
+msgstr ""
+
+#: ../../contributing/development.rst:595 ff188a95155a4a6d85c440ec112470b3
+msgid "Bad: pppoe, ipsec"
+msgstr ""
+
+#: ../../contributing/development.rst:598 26901f5cbcfc4cfeb69da88966604704
+msgid "Use of verbs"
+msgstr ""
+
+#: ../../contributing/development.rst:600 84ad88808fcd41389ab5a8384be44351
+msgid "Verbs **should** be avoided. If a verb can be omitted, omit it."
+msgstr ""
+
+#: ../../contributing/development.rst:605 5831b1d1b4014dd9aa36d7a64a3c789a
+msgid "Bad: \"Set TCP connection timeout\""
+msgstr ""
+
+#: ../../contributing/development.rst:607 b6ade6844d5647ad97e6856ca1041917
+msgid ""
+"If a verb is essential, keep it. For example, in the help text of ``set "
+"system ipv6 disable-forwarding``, \"Disable IPv6 forwarding on all "
+"interfaces\" is a perfectly justified wording."
+msgstr ""
+
+#: ../../contributing/development.rst:612 b6581bc8632d4b51868fb7bb484d2a2d
+msgid "Prefer infinitives"
+msgstr ""
+
+#: ../../contributing/development.rst:614 c0fac675ba34446fb6f8d474ddfdcfd2
+msgid ""
+"Verbs, when they are necessary, **should** be in their infinitive form."
+msgstr ""
+
+#: ../../contributing/development.rst:618 39e33e702b2e410ebf16bd02cfb070d3
+msgid "Good: \"Disable IPv6 forwarding\""
+msgstr ""
+
+#: ../../contributing/development.rst:619 4a2e1fff7f8543b8bbe833f719f226a7
+msgid "Bad: \"Disables IPv6 forwarding\""
+msgstr ""
+
+#: ../../contributing/development.rst:622 09e1a88b6428413fa6337164fa4871a7
+msgid "Migrating old CLI"
+msgstr ""
+
+#: ../../contributing/development.rst:628 7cc4489e656f403dbf220ae4b79a0b0c
+msgid "Old concept/syntax"
+msgstr ""
+
+#: ../../contributing/development.rst:629 f72b04fe25894237a0958a5af8d662f7
+msgid "New syntax"
+msgstr ""
+
+#: ../../contributing/development.rst:630 4325ebdacbc9451bad8ea85c3042e95c
+msgid "Notes"
+msgstr ""
+
+#: ../../contributing/development.rst:631 b22ec3d4accd4dabb22f2df06947e955
+msgid "mynode/node.def"
+msgstr ""
+
+#: ../../contributing/development.rst:632 813c64088d3a4faea8df9fe6674c8896
+msgid "<node name=\"mynode\"> </node>"
+msgstr ""
+
+#: ../../contributing/development.rst:633 0cbc70a2a3274db4a02e28acc75595ba
+msgid "Leaf nodes (nodes with values) use <leafNode> tag instead"
+msgstr ""
+
+#: ../../contributing/development.rst:634 7ff7be20e53b481a8916e6d09a247075
+msgid "mynode/node.tag , tag:"
+msgstr ""
+
+#: ../../contributing/development.rst:635 d97d99660bb241d5b67e8a512404fd90
+msgid "<tagNode name=\"mynode> </node>"
+msgstr ""
+
+#: ../../contributing/development.rst:637 e3fba8ff692a4819937093306b7bbfa3
+msgid "help: My node"
+msgstr ""
+
+#: ../../contributing/development.rst:638 219da58427f64cf6813b5e62944eef14
+msgid "<properties> <help>My node</help>"
+msgstr ""
+
+#: ../../contributing/development.rst:640 6b1d4eb28c9348f78bad00c0d36d8197
+msgid "val_help: <format>; some string"
+msgstr ""
+
+#: ../../contributing/development.rst:641 b12810695e7a4ca0b5e89f0895691b71
+msgid ""
+"<properties> <valueHelp> <format> format </format> <description> some string"
+" </description>"
+msgstr ""
+
+#: ../../contributing/development.rst:643 3d228a4ecdda42c5bcac5beda63079d8
+msgid ""
+"Do not add angle brackets around the format, they will be inserted "
+"automatically"
+msgstr ""
+
+#: ../../contributing/development.rst:645 197955c5e68d4c169c2b3646fe5fab07
+msgid "syntax:expression: pattern"
+msgstr ""
+
+#: ../../contributing/development.rst:646 f54ac7b073ba4aaca03d931f0dafab21
+msgid "<properties> <constraint> <regex> ..."
+msgstr ""
+
+#: ../../contributing/development.rst:647 bb848432f84745389e12d3420fd9b200
+msgid "<constraintErrorMessage> will be displayed on failure"
+msgstr ""
+
+#: ../../contributing/development.rst:648 318f28f6358641319bd6bd73ade0a5ce
+msgid "syntax:expression: $VAR(@) in \"foo\", \"bar\", \"baz\""
+msgstr ""
+
+#: ../../contributing/development.rst:649
+#: ../../contributing/development.rst:656
+#: ../../contributing/development.rst:676
+#: ../../contributing/development.rst:679
+#: ../../contributing/development.rst:682 848f62017cff42f48932eec178fca271
+#: 5409dd2a521b48988e2711e3b1cb9ecb e2b50ef0506242328052488e3c20eef9
+#: 7d71973bda64400db9774df185a7bc69 077c812f057a447bbf7909f4db0f1fee
+msgid "None"
+msgstr ""
+
+#: ../../contributing/development.rst:650 f437eb411a6545939babd65caf3d54f8
+msgid "Use regex"
+msgstr ""
+
+#: ../../contributing/development.rst:651 f3226b9b99e94e7c90617691c1b3db82
+msgid "syntax:expression: exec ..."
+msgstr ""
+
+#: ../../contributing/development.rst:652 f0f39c43c9d24035b7799ddee422ec16
+msgid "<properties> <constraint> <validator> <name =\"foo\" argument=\"bar\">"
+msgstr ""
+
+#: ../../contributing/development.rst:653 80caa3fd0b414be5948828228f8f56bc
+msgid ""
+"\"${vyos_libexecdir}/validators/foo bar $VAR(@)\" will be executed, "
+"<constraintErrorMessage> will be displayed on failure"
+msgstr ""
+
+#: ../../contributing/development.rst:655 cfaefb230d494308868c1a2b1ccd0cbd
+msgid "syntax:expression: (arithmetic expression)"
+msgstr ""
+
+#: ../../contributing/development.rst:657 12d7c3f6f5674daeaace5931c0ca8efd
+msgid ""
+"External arithmetic validator may be added if there's demand, complex "
+"validation is better left to commit-time scripts"
+msgstr ""
+
+#: ../../contributing/development.rst:659 55a9e6825cf24261909a2a1865bee2a1
+msgid "priority: 999"
+msgstr ""
+
+#: ../../contributing/development.rst:660 359045dbc11949d2846edcbb1823d4b2
+msgid "<properties> <priority>999</priority>"
+msgstr ""
+
+#: ../../contributing/development.rst:661 b35d3f18f65b447baea445023b722c2f
+msgid ""
+"Please leave a comment explaining why the priority was chosen (e.g. \"after "
+"interfaces are configured\")"
+msgstr ""
+
+#: ../../contributing/development.rst:663 f2fc7e7db46d410a8d5a7fd01488447f
+msgid "multi:"
+msgstr ""
+
+#: ../../contributing/development.rst:664 a5c47353b4e240a897d9989c6b4cc418
+msgid "<properties> <multi/>"
+msgstr ""
+
+#: ../../contributing/development.rst:665 d22bd39f7baa49ac828aff803f93a5b3
+msgid "Only applicable to leaf nodes"
+msgstr ""
+
+#: ../../contributing/development.rst:666 8b603494e75748a5950b48cf7bdc1e76
+msgid "allowed: echo foo bar"
+msgstr ""
+
+#: ../../contributing/development.rst:667 31b948d3cf3e49aba60122c0e5b18fa7
+msgid "<properties> <completionHelp> <list> foo bar </list>"
+msgstr ""
+
+#: ../../contributing/development.rst:669 ae1fa30e898b4b9880386b11c2656d88
+msgid "allowed: cli-shell-api listNodes vpn ipsec esp-group"
+msgstr ""
+
+#: ../../contributing/development.rst:670 34ff9f59e15f4b0c89fdc50bf26ae5cf
+msgid "<properties> <completionHelp> <path> vpn ipsec esp-group </path> ..."
+msgstr ""
+
+#: ../../contributing/development.rst:672 0acda12d528c4983a8bc24e215e2e938
+msgid "allowed: /path/to/script"
+msgstr ""
+
+#: ../../contributing/development.rst:673 e50fd5d7b645484e9f85438fcaeee425
+msgid "<properties> <completionHelp> <script> /path/to/script </script> ..."
+msgstr ""
+
+#: ../../contributing/development.rst:675 88e7993d35574ae28c11ed123d2892d0
+msgid "default:"
+msgstr ""
+
+#: ../../contributing/development.rst:677 989f6e68960c448b9b140d8422bea4c7
+msgid "Move default values to scripts"
+msgstr ""
+
+#: ../../contributing/development.rst:678 1f79f35408e34bd28365ef547a70792b
+msgid "commit:expression:"
+msgstr ""
+
+#: ../../contributing/development.rst:680 1a95ffbafac2474cb1822de847539037
+msgid ""
+"All commit time checks should be in the verify() function of the script"
+msgstr ""
+
+#: ../../contributing/development.rst:681 6abc6c67084f4588993c0ad9fdf45c6c
+msgid "begin:/create:/delete:"
+msgstr ""
+
+#: ../../contributing/development.rst:683 dae250339d384fe998af358aeaa8edc1
+msgid "All logic should be in the scripts"
+msgstr ""
+
+#: ../../contributing/development.rst:686 0a761544b2394577b208ceae0173ee7d
+msgid "Continuous Integration"
+msgstr ""
+
+#: ../../contributing/development.rst:688 15570252713643b9b14be94fe82afaf3
+msgid ""
+"VyOS makes use of Jenkins_ as our Continuous Integration (CI) service. Our "
+"`VyOS CI`_ server is publicly accessible here: https://ci.vyos.net. You can "
+"get a brief overview of all required components shipped in a VyOS ISO."
+msgstr ""
+
+#: ../../contributing/development.rst:692 316fa05e045744999e29a99d37461ab6
+msgid ""
+"To build our modules we utilize a CI/CD Pipeline script. Each and every VyOS"
+" component comes with it's own ``Jenkinsfile`` which is (more or less) a "
+"copy. The Pipeline utilizes the Docker container from the :ref:`build_iso` "
+"section - but instead of building it from source on every run, we rather "
+"always fetch a fresh copy (if needed) from Dockerhub_."
+msgstr ""
+
+#: ../../contributing/development.rst:698 529a7e068b0f411c9e71f107c09baac3
+msgid ""
+"Each module is build on demand if a new commit on the branch in question is "
+"found. After a successful run the resulting Debian Package(s) will be "
+"deployed to our Debian repository which is used during build time. It is "
+"located here: http://dev.packages.vyos.net/repositories/."
+msgstr ""