QGIS 3.16 DocumentationGuidelines BG
QGIS 3.16 DocumentationGuidelines BG
QGIS 3.16 DocumentationGuidelines BG
QGIS Project
2 Writing Guidelines 15
2.1 Writing Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.1 Headlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.2 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.3 Inline Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.4 Labels/references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.5 Figures and Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.6 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.7 Special Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.8 Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.9 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Managing Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Add new Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2 Translated Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 Documenting Processing algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Насоки за превод 31
4.1 Translation process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Translate a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
i
4.2.1 Translation in Transifex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.2 Превод в Qt Linguist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.3 Преведи ръководство . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.4 Обобщение на Правилата за превод . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Substitutions 39
5.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2 Common Substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.1 Platform Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.2 Menu Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3 Toolbar Button Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3.1 Manage Layers and overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3.2 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.3 Редакция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.4 Identity result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.5 Digitizing and Advanced Digitizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3.6 Map Navigation and attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3.7 Selection and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3.8 Labels and Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.9 Decorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.10 Помощ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.11 Цветове . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 Other basic icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Атрибутивна таблица . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.6 Projections and Georeferencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.7 Print Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.8 Layer Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.9 Добавки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.9.1 Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.9.2 Various Core Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.9.3 Grass integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
ii
QGIS Documentation Guidelines
QGIS Documentation will be built automatically on the server at 0, 8am, 4pm US/Pacific (Pacific Time). The
current status is available at https://docs.qgis.org.
QGIS Documentation source files are available at https://github.com/qgis/QGIS-Documentation. They are mainly
written using the reStructuredText (reST) format syntax, coupled with some scripts from the Sphinx toolset to post-
process the HTML output. For general information on these tools, see http://docutils.sourceforge.net/docs/ref/rst/
restructuredtext.html or https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html.
The following chapters will guide you through learning:
• how to manage the documentation source files using git system and the GitHub platform on which they are
stored
• how to modify the texts, provide screenshots… in a compliant way
• how to share and ensure your modifications are pushed to the official docs.
If you are looking for general information about how to contribute to the QGIS project, you may find help at Get
Involved in the QGIS Community.
Съдържание 1
QGIS Documentation Guidelines
2 Съдържание
ГЛАВА 1
Note: Though QGIS-Documentation is used to demonstrate the process, all commands and steps shown below also
3
QGIS Documentation Guidelines
apply to QGIS-Website.
If you are reading these lines, it is certainly because you are willing to contribute to writing QGIS documentation
and are looking for a how-to. You have come to the right place! The current document will guide you through the
different ways to achieve this objective, showing you the main steps to follow, the tricks you can use and the traps
you should be aware of.
For any help, do not hesitate to either ask in a comment on the issue report you are trying to fix or write to the
QGIS-community-team list. More details at Get involved in documentation.
Let’s now dive into the process.
Documentation sources are stored using the git version control system and are available on GitHub at https://github.
com/qgis/QGIS-Documentation. A list of issues to fix and features to explain can be found at https://github.com/
qgis/QGIS-Documentation/issues.
Tip: If you are a first-time contributor and do not know where to start from, you may be interested in tackling our
welcoming reports.
There are two main ways, not mutually exclusive, to modify the files:
1. Using the GitHub web interface
2. Using Git command line tools.
Assuming you already have a GitHub account, you first need to fork the source files of the documentation.
Navigate to the QGIS-Documentation repository page and click on the button in the upper right corner.
In your GitHub account you will find a QGIS-Documentation repository (https://github.com/
<YourName>/QGIS-Documentation). This repository is a copy of the official QGIS-Documentation
repository where you have full write access and you can make changes without affecting the official documentation.
There are different ways to contribute to QGIS documentation. We show them separately below, but you can switch
from one process to the other without any harm.
Pages on the QGIS documentation website can be edited quickly and easily by clicking on the Edit on GitHub
link at the top right of each page.
1. This will open the file in the qgis:master branch with a message at the top of the page telling you that
you don’t have write access to this repo and your changes will be applied to a new branch of your repository.
2. Do your changes. Since the documentation is written using the reStructureText syntax, depending on your
changes, you may need to rely on the writing guidelines.
3. When you finish, make a short comment about your changes and click on Propose changes. This will generate
a new branch (patch-xxx) in your repository.
4. After you click on Propose changes, github will navigate to the Comparing changes page.
• If you’re done making changes, skip to Compare changes in the Share your changes via Pull Request
section below.
• If there are additional changes that you want to make before submitting them to QGIS, follow these
steps:
1. Navigate to your fork of QGIS-Documentation (https://github.com/<YourName>/
QGIS-Documentation)
2. Click on and search for the patch-xxx branch. Select this patch branch.
Note: The Edit on GitHub shortcut is also available in the drop-down menu at the bottom of the left sidebar.
You can edit files directly from your fork of the QGIS Documentation.
Click on in the upper left corner of your forked QGIS- Documentation repository and enter a
unique name in the text field to create a new branch . The name of the new branch should relate to the problem you
1. Browse the source files of your fork of QGIS-Documentation to the file that needs to be modified
2. Make your modifications following the writing guidelines
3. When you finish, navigate to the Commit Changes frame at the bottom of the page, make a short comment
about your changes, and click on Commit Changes to commit the changes directly to your branch. Make sure
Commit directly to the branch_name branch. is selected.
4. Repeat the previous steps for any other file that needs to be updated to fix the issue
You need to make a pull request to integrate your changes into the official documentation.
Navigate to the main page of the QGIS-Documentation repository and click on New pull request.
Compare changes
If you see two dialog boxes, one that says base:master and the other compare:branch_name (see figure),
this will only merge your changes from one of your branches to your master branch. To fix this click on the compare
across forks link.
Fig. 1.1: If your Comparing changes page looks like this, click on the compare across forks link.
You should see four drop-down menus. These will allow you to compare the changes that you have made in your
branch with the master branch that you want to merge into. They are:
• base fork: the fork that you want to merge your changes into
• base: the branch of the base fork that you want to merge your changes into
• head fork: the fork that has changes that you want to incorporate into the base fork
• compare: the branch with those changes
Select qgis/QGIS-Documentation as the base fork with master as base, set the head fork to your repository
<YourName>/QGIS-Documentation, and set compare to your modified branch.
A green check with the words Able to merge shows that your changes can be merged into the official documentation
without conflicts.
Click the Create pull request button.
Tip: Though being translated, the latest version of QGIS documentation is still maintained and existing issues are
fixed. If you are fixing issues for a different release, change base from master to the appropriate release_...
branch in the steps above.
A text box will open: fill in any relevant comments for the issue you are addressing.
If this relates to a particular issue, add the issue number to your comments. This is done by entering # and the issue
number (e.g. #1234). If preceded by terms like fix or close, the concerned issue will be closed as soon as the
pull request is merged.
Add links to any documentation pages that you are changing.
Click on Create pull request.
As seen above, anyone can submit modifications to the documentation through pull requests. Likewise anyone can
review pull requests with questions and comments. Perhaps the writing style doesn’t match the project guidelines,
the change is missing some major details or screenshots, or maybe everything looks great and is in order. Reviewing
helps to improve the quality of the contribution, both in form and substance.
To review a pull request:
1. Navigate to the pull requests page and click on the pull request that you want to comment on.
2. At the bottom of the page you will find a text box where you can leave general comments about the pull
request.
3. To add comments about specific lines,
1. Click on and find the file you want to comment on. You may have to click on
Display the source diff to see the changes.
2. Scroll to the line you want to comment on and click on the . That will open a text box allowing you
to leave a comment.
Specific line comments can be published either:
• as single comments, using the Add single comment button. They are published as you go. Use this only if you
have few comments to add or when replying to another comment.
• or as part of a review, pressing the Start a review button. Your comments are not automatically sent after
validation, allowing you to edit or cancel them afterwards, to add a summary of the main points of the review
or global instructions regarding the pull request and whether you approve it or not. This is the convenient
way since it’s more flexible and allows you to structure your review, edit the comments, publish when you are
ready and send a single notification to the repository followers and not one notification for each comment.
Get more details.
Line comments can embed suggestions that the pull request writer can apply to the pull request. To add a suggestion,
Insert a suggestion
click the button on top of the comment text box and modify the text within the suggestion block.
Make corrections
A new pull request will automatically be added to the Pull requests list. Other editors and administrators will review
your pull request and they may make suggestions or ask for corrections.
A pull request will also trigger automated build checks (eg, for rst formatting, python code syntaxes), and reports
are displayed at the bottom of the page. If an error is found, a red cross will appear next to your commit. Click on
the red cross or on Details in the summary section at the bottom of the pull request page to see the details of the
error. You’ll have to fix any reported errors or warnings before your changes are committed to the qgis/QGIS-
Documentation repository.
You can make modifications to your pull request until it is merged with the main repository, either to improve your
request, to address requested modifications, or to fix a build error.
To make changes click on the tab in your pull request page and click the pencil button
next to the filename that you want to modify.
Any additional changes will be automatically added to your pull request if you make those changes to the same
branch that you submitted in your pull request. For this reason, you should only make additional changes if those
changes relate to the issue that you intend to fix with that pull request.
If you want to fix another issue, create a new branch for those changes and repeat the steps above.
An administrator will merge your contribution after any build errors are corrected, and after you and the
administrators are satisfied with your changes.
You can delete the branch after your changes have been merged. Deleting old branches saves you from having
unused and outdated branches in your repository.
1. Navigate to your fork of the QGIS-Documentation repository (https://github.com/<YourName>/
QGIS-Documentation).
2. Click on the Branches tab. Below Your branches you’ll see a list of your branches.
The GitHub web interface is an easy way to update the QGIS-documentation repo with your contributions, but it
doesn’t offer tools to:
• group your commits and clean your change history
• fix possible conflicts with the main repo
• build the documentation to test your changes
You need to install git on your hard drive in order to get access to more advanced and powerful tools and have a
local copy of the repository. Some basics you may often need are exposed below. You’ll also find rules to care about
even if you opt for the web interface.
In the code samples below, lines beginning with $ show commands you should type while # are comments.
Now you are ready to get a local clone of your QGIS-Documentation repository.
You can clone your QGIS repository using the web URL as follows:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone https://github.com/<YourName>/QGIS-Documentation.git
The former command line is simply an example. You should adapt both the path and the repository URL, replacing
<YourName> with your github user name.
Check the following:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone [email protected]:<YourName>/QGIS-Documentation.git
You can start to work here but in the long term process you will get a lot of issues when you will push
your contribution (called Pull Request in github process) as the master branch of the qgis/QGIS-Documentation
repository will diverge from your local/remote repository. You then need to keep track of the main remote repository
and work with branches.
To be able to follow the work in the main project, add a new remote repository in your local repository. This new
remote repository is the QGIS-Documentation repository from QGIS project:
Similarly, you can use the SSH protocol to add a remote repository in your local repository:
Note: upstream is just a label, a kind of standard name but you can call it as you want.
Before working on a new contribution, you should always update your master branch in your local repository.
Assuming you are willing to push changes to the testing documentation, run the following command lines:
Now you have your local and remote repositories which both have their master branch up to date with the official
master branch of QGIS-Documentation. You can start to work on your contribution.
Now that your base branch is updated, you need to create a dedicated branch in which you add your contribution.
Always work on a branch other than the base branch! Always!
Now you can go to your github repository and create a Pull Request as exposed in a previous section. Ensure you
create a PR from your branch to the remote branch you are targetting in the official QGIS-Documentation repository.
After your PR has been merged into the official QGIS-Documentation, you can delete your branch. If you work a
lot this way, in few weeks you will get a lot of unuseful branches. So keep your repository clean this way:
And do not forget to update the master branch in your local repository!
• Other than the Github web interface and the git command line tools exposed above, there are also GUI
applications you can use to create and manage your contributions to the documentation.
• When the changes in the pull request are conflicting with recent changes pushed to the target branch, the
conflicts need to be resolved before a merge is possible:
– if the conflict relates to few competing lines, a Resolve conflicts button is available in the Github pull
request page. Press the button and resolve the issue as explained at https://help.github.com/articles/
resolving-a-merge-conflict-on-github/
– if the conflict involves files renaming or removal, then you’d need to resolve the conflict using git
command lines. Typically, you have to first rebase your branch over the target branch using git
rebase targetBranch call and fix the conflicts that are reported. Read more at https://help.
github.com/articles/resolving-a-merge-conflict-using-the-command-line/
• Sometimes, at the end of the proofreading process, you may end up with changes split into multiple
commits that are not necessarily worth it. Git command lines help you squash these commits to a
smaller number and more meaningful commit messages. Some details at https://help.github.com/articles/
using-git-rebase-on-the-command-line/
Writing Guidelines
• Writing Documentation
– Headlines
– Lists
– Inline Tags
– Labels/references
– Figures and Images
∗ Pictures
∗ Replacement
∗ Figure
∗ Tables
– Index
– Special Comments
– Code Snippets
– Footnotes
• Managing Screenshots
– Add new Screenshots
– Translated Screenshots
• Documenting Processing algorithms
In general, when creating reST documentation for the QGIS project, please follow the Python documentation style
guidelines. For convenience, we provide a set of general rules we rely on for writing QGIS documentation below.
15
QGIS Documentation Guidelines
2.1.1 Headlines
********
Chapter
********
Section
=======
Subsection
----------
Minisec
.......
Subminisec
^^^^^^^^^^
2.1.2 Lists
Lists are useful for structuring the text. Here are some simple rules common to all lists:
• Start all list items with a capital letter
• Do not use punctuation after list items that only contain a single simple sentence
• Use period ( . ) as punctuation for list items that consist of several sentences or a single compound sentence
• Dialogs and Tab titles: Labels presented as part of an interactive user interface including window titles, tab
titles, button and option labels.
:guilabel:`title`
:file:`README.rst`
|icon| :sup:`popup_text`
• Keyboard shortcuts
:kbd:`Ctrl+B`
``label``
2.1.4 Labels/references
Anchors inside the text can be used to create hyperlinks to sections or pages.
The example below creates the anchor of a section (e.g., Label/reference title)
.. _my_anchor:
Label/reference
---------------
which will create a link with the caption instead (in this case the title of this section!):
see Labels/references for more information.
So, reference 1 (my_anchor) and reference 2 (Labels/references). Because the reference often displays a full caption,
it is not really necessary to use the word section. Note that you can also use a custom caption to describe the reference:
which returns:
see Label and reference for more information.
Pictures
.. figure:: /static/common/logo.png
:width: 10 em
which returns
Replacement
You can put an image inside text or add an alias to use everywhere. To use an image inside a paragraph, first create
an alias in the source/substitutions.txt file:
Note: Currently, to ensure consistency and help in the use of QGIS icons, a list of aliases is built and available in
the Substitutions chapter.
Figure
.. _figure_logo:
.. figure:: /static/common/logo.png
:width: 20 em
:align: center
To avoid conflicts with other references, always begin figure anchors with _figure_ and use terms that easily
connect to the figure caption. While only the centered alignment is mandatory for the image, feel free to use any
other options for figures (such as width, height, scale…) if needed.
The scripts will insert an automatically generated number before the caption of the figure in the generated HTML
and PDF versions of the documentation.
To use a caption (see My caption) just insert indented text after a blank line in the figure block.
A figure can be referenced using the reference label like this:
see :numref:`figure_logo`
Avoid using :ref: instead of :numref: for reference,since this returns the full caption of the image.
see :ref:`figure_logo`
Tables
x y z
1 2 3
4 5
.. _my_drawn_table:
+---------------+--------------------+
| Windows | macOS |
+---------------+--------------------+
| |win| | |osx| |
+---------------+--------------------+
| and of course not to forget |nix| |
+------------------------------------+
The result:
Windows macOS
.. list-table::
:header-rows: 1
:widths: 20 20 20 40
* - What
- Purpose
- Key word
- Description
* - **Test**
- ``Useful test``
- complexity
- Geometry. One of:
* Point
* Line
The result:
2.1.6 Index
An index is a handy way to help the reader find information in a document. QGIS documentation provides some
essential indices. There are a few rules that help us provide a set of indices that are really useful (coherent, consistent
and really connected to each other):
• An index should be human readable, understandable and translatable; an index can be made from many
words but you should avoid any unneeded _, -… characters to link them i.e., Loading layers instead
of loading_layers or loadingLayers.
• Capitalize only the first letter of the index unless the word has a particular spelling. E.g., Loading layers,
Atlas generation, WMS, pgsql2shp.
• Keep an eye on the existing Index list in order to reuse the most convenient expression with the right spelling
and avoid unnecessary duplicates.
Several index tags exist in RST. You can use the inline :index: tag within normal text:
Or you can use the .. index:: block-level markup which links to the beginning of the next paragraph. Because
of the rules mentioned above, it is recommended to use the block-level tag:
It is also recommended to use index parameters such as single, pair and see, in order to build a more structured
and interconnected index table. See Index generating for more information on index creation.
Sometimes, you may want to emphasize some points of the description, either to warn, remind or give some hints to
the user. In QGIS Documentation, we use reST special directives such as .. warning::, .. seealso::`,
``.. note:: and .. tip::. These directives generate frames that highlight your comments. See Paragraph
Level markup for more information. A clear and appropriate title is required for both warnings and tips.
Begin tips with a title that summarizes what it is about. This helps
users to quickly overview the message you want to give them, and
decide on its relevance.
You may also want to give examples and insert code snippets. In this case, write the comment below a line with the
:: directive inserted. For a better rendering, especially to apply color highlighting to code according to its language,
use the code-block directive, e.g. .. code-block:: xml. More details at Showing code.
Note: While texts in note, tip and warning frames are translatable, be aware that code block frames do not allow
translation. So avoid comments not related to the code and keep comments as short as possible.
2.1.9 Footnotes
Please note: Footnotes are not recognized by any translation software and it is also not converted to pdf format
properly. So, if possible, don’t use footnotes within any documentation.
This is for creating a footnote (showing as example1 )
blabla [1]_
Here are some hints to create new, nice looking screenshots. The images should be placed in an image (img/) folder
that is located in the same folder as the referencing .rst file.
• You can find some prepared QGIS-projects that are used to create screenshots in the ./qgis-projects
folder of this repository. This makes it easier to reproduce screenshots for the next version of QGIS. These
projects use the QGIS Sample Data (aka Alaska Dataset), which should be placed in the same folder as the
QGIS-Documentation Repository.
• Reduce the window to the minimal space needed to show the feature (taking the whole screen for a small
modal window > overkill)
• The less clutter, the better (no need to activate all the toolbars)
• Don’t resize them in an image editor; the size will be set into the .rst files if necessary (downscaling the
dimensions without properly upping the resolution > ugly)
• Cut the background
• Make the top corners transparent if the background is not white
• Set print size resolution to 135 dpi (e.g. in Gimp set the print resolution Image ► Print size and save).
This way, images will be at original size in html and at a good print resolution in the PDF. You can also use
ImageMagick convert command to do a batch of images:
Tip: If you are on Ubuntu, you can use the following command to remove the global menu function and create
smaller application screens with menus:
Here are some additional hints for those that want to create screenshots for a translated user guide:
Translated images should be placed in a img/<your_language>/ folder. Use the same filename as the english
‚original‘ screenshot.
If you want to write documentation for Processing algorithms, consider these guidelines:
• Processing algorithm help files are part of QGIS User Guide, so use the same formatting as User Guide and
other documentation.
• Each algorithm documentation should be placed in the corresponding provider folder and group file,
e.g. the algorithm Voronoi polygon belongs to the QGIS provider and to the group vectorgeometry. So the
correct file to add the description is: source/docs/user_manual/processing_algs/qgis/
vectorgeometry.rst.
Note: Before starting to write the guide, check if the algorithm is already described. In this case, you can
enhance the existing description.
• It is extremely important that each algorithm has an anchor that corresponds to the provider name + the
unique name of the algorithm itself. This allows the Help button to open the Help page of the correct section.
The anchor should be placed above the title, e.g. (see also the Labels/references section):
.. _qgisvoronoipolygons:
Voronoi polygons
----------------
To find out the algorithm name you can just hover the mouse on the algorithm in the Processing toolbox.
• Avoid using „This algorithm does this and that…“ as the first sentence in the algorithm description. Try to
use more general expressions like:
• Avoid describing what the algorithm does by replicating its name and please don’t replicate the name of the
parameter in the description of the parameter itself. For example if the algorithm is Voronoi polygon
consider to describe the Input layer as Layer to calculate the polygon from.
• Indicate in the description whether the algorithm has a default shortcut in QGIS or supports in-place editing.
• Add images! A picture is worth a thousand words! Use .png format and follow the general guidelines for
documentation (see the Figures and Images section for more info). Put the image file in the correct folder,
i.e. the img folder next to the .rst file you are editing.
• If necessary, add links in the „See also“ section that provide additional information about the algorithm (e.g.,
publications or web-pages). Only add the „See also“ section if there is really something to see. As a good
practice, the „See also“ section can be filled with links to similar algorithms.
• Give clear explanation for algorithm parameters and outputs: take inspiration from existing algorithms.
• Avoid duplicating detailed description of algorithm options. Add this information in the parameter
description.
• Avoid adding information about the vector geometry type in the algorithm or parameter description, as this
information is already available in the parameter descriptions.
• Add the default value of the parameter, e.g.:
* - **Number of points**
- ``NUMBER_OF_POINTS``
- [number]
Default: 1
- Number of points to create
• Describe the type of input supported the parameters. There are several types available you can pick one from:
• Study an existing and well documented algorithm, and copy all the useful layouts.
• When you are finished, just follow the guidelines described in A Step By Step Contribution to commit your
changes and make a Pull Request
Here is an example of an existing algorithm to help you with the layout and the description:
.. _qgiscountpointsinpolygon:
.. figure:: img/count_points_polygon.png
:align: center
Parameters
..........
.. list-table::
:header-rows: 1
:widths: 20 20 20 40
* - Label
- Name
- Type
- Description
* - **Polygons**
- ``POLYGONS``
- [vector: polygon]
- Polygon layer whose features are associated with the count of
points they contain
* - **Points**
- ``POINTS``
- [vector: point]
- Point layer with features to count
* - **Weight field**
Optional
- ``WEIGHT``
- [tablefield: numeric]
- A field from the point layer.
The count generated will be the sum of the weight field of the
points contained by the polygon.
* - **Class field**
Optional
- ``CLASSFIELD``
- [tablefield: any]
- Points are classified based on the selected attribute and if
several points with the same attribute value are within the
polygon, only one of them is counted.
The final count of the points in a polygon is, therefore, the
count of different classes that are found in it.
* - **Count field name**
- ``FIELD``
(continues on next page)
Default: 'NUMPOINTS'
- The name of the field to store the count of points
* - **Count**
- ``OUTPUT``
- [vector: polygon]
Outputs
.......
.. list-table::
:header-rows: 1
:widths: 20 20 20 40
* - Label
- Name
- Type
- Description
* - **Count**
- ``OUTPUT``
- [vector: polygon]
- Resulting layer with the attribute table containing the
new column with the points count
If you are planning to add or update some chapters of the PyQGIS-Developer-Cookbook, then you should follow
some rules to enable automatic testing of the code snippets.
Testing is really important because it allows automatic checking of the code. Code snippets with errors or code that
uses outdated methods will fail and the notification will help you fix the problems.
For testing, we use the Sphinx doctest extension. Refer to the extension documentation for more detailed
information.
Writing testable code snippets is not so different from the old method. Basically, you need to use a different Sphinx
directive.
Instead of embedding the code in a .. code-block:: python directive (which would highlight the code
syntax automatically), you now need to embed it in a .. testcode::. That is, instead of this:
.. code-block:: python
crs = QgsCoordinateReferenceSystem("EPSG:4326")
assert crs.isValid()
27
QGIS Documentation Guidelines
.. testcode::
crs = QgsCoordinateReferenceSystem("EPSG:4326")
assert crs.isValid()
After you wrote the example code, you should add some assertion that will evaluate the code and that will be run
automatically.
In the above example, you are creating a crs and with assert crs.isValid() you test if it is valid. If the
code has a wrong python syntax or the crs.isValid() returns False, this code snippet will fail during testing.
To successfully run the tests on snippets, you must import all the classes and declare any variables used in the code
snippets. You can include those in the code snippet itself (visible in the HTML pages) or you can add them to a ..
testsetup:: directive (hidden in the HTML pages). The .. testsetup:: needs to be placed before the
.. testcode:::
.. testsetup::
.. testcode::
crs = QgsCoordinateReferenceSystem("EPSG:4326")
assert crs.isValid()
If the code snippet doesn’t create objects (and therefore you cannot use something like assert object.
isValid()), you can test the code using the print() method, then add the expected results within a ..
testoutput:: directive to compare the expected output:
.. testcode::
.. testoutput::
By default, the content of .. testoutput:: is shown in the HTML output. To hide it from the HTML use the
:hide: option:
.. testoutput::
:hide:
Note: If the code snippet contains any print statements, you MUST add a testoutput with the expected outputs;
otherwise the test will fail.
For each rst document, the code snippets are tested sequentially, which means you can use one .. testsetup::
for all the following code snippets and that later snippets will have access to variables declared in earlier ones in the
document.
Alternatively, you can use groups to break down the examples on the same page in different tests.
You add the code snippet to groups by adding one or more group names (separated by commas) in the respective
directive:
crs = QgsCoordinateReferenceSystem("EPSG:4326")
assert crs.isValid()
The doctest will pick each group snippets and run them independently.
Note: Use group names that make sense with the related content. Use something similar to
<chapter>_<subchapter>, for example: crs_intro, crs_fromwkt. In case of failures, this will help identifying
where the failures occur.
If you don’t declare any group, the code snippet will be added to a group named default. If instead, you use * as
a group name, the snippet will be used in all testing groups, something normally usefull to use in the test setup:
.. testsetup:: *
To test Python code snippets, you need a QGIS installation. For this, there are many options. You can:
• Use your system QGIS installation with Sphinx from a Python virtual environment:
include venv.mk
Or
include venv.mk
You have to install Docker first because this uses a docker image with QGIS in it.
Насоки за превод
• Translation process
• Translate a file
– Translation in Transifex
– Превод в Qt Linguist
– Преведи ръководство
– Обобщение на Правилата за превод
This manual is aiming to help the translator. First the general process of how technically a translation is done is
explained. Later the translation is explained from an actual English rst document that is translated to Dutch. Finally
a summary of Rules of translation is given.
Note: Although these guidelines focus on QGIS documentation, the methods and the rules described below are also
applicable to QGIS applications and website translation.
QGIS Documentation is written in English with .rst files. In order to provide translations:
1. A prebuild script creates translation files named .po files for the English language in the folder /QGIS-
Documentation/locale/en.
2. These „originals“ are then copied by the script to the locale folders for other languages.
3. The sentences in the .po files are pushed to the Transifex web platform, and made available for translators
who can begin to translate from English to their language with the editor.
4. At the end of the day, a script pulls back all validated translations
5. At the next build of the documentation (which occurs at least once a day), a script reuses the sentences to
create translated output
31
QGIS Documentation Guidelines
6. When afterwards an .rst document is updated a new .po file is created in the English part. The contents
of this new file will be merged with already existing .po files for each language. This means that when a new
line is added to an .rst document that was already translated, only the new/updated sentences are added
in the translated .po file and needs to be translated. The amount of work for updating translations for next
release should be relatively small.
Note: The process above is the same followed to translate QGIS website, QGIS Desktop and QGIS Server. The
difference with the applications is that instead of .po files, all the translatable strings in the .py, .cpp, .yaml
and others… files that shape the application are pushed to and pulled from transifex as a single .ts file.
To explain how translation works, we will use the heatmap plugin as an example. In this example we will translate
it from English to Dutch, but it will be practically the same for other documents in all languages.
The source of the document can be found here:
QGIS-Documentation/source/docs/user_manual/plugins/plugins_heatmap.rst
QGIS-Documentation/locale/en/LC_MESSAGES/docs/user_manual/plugins/plugins_heatmap.
,→po
The equivalent Dutch .po file (basically a copy) can be found here:
QGIS-Documentation/locale/nl/LC_MESSAGES/docs/user_manual/plugins/plugins_heatmap.
,→po
Along this file you will see a tiny .mo file which indicates that it does not hold any translations yet.
Tip: For the documentation or the website, clicking the Fix me link in the footer of a page brings you
directly to its corresponding translation page in Transifex.
5. All you need to do is select each text and translate following the guidelines.
For further information on the use of Transifex Web Editor, see https://docs.transifex.com/translation/
translating-with-the-web-editor.
The Target language should be filled correctly. The Source language can be left as is with language POSIX and
Country/Region on Any Country.
When you press the OK button Qt Linguist is filled with sentences and you can start translating, see Fig. 4.3.
In the menu you see the following buttons which are convenient to use.
• The Translation Done Next button, is the most important button. If the item needs translation, you enter
a translation in the text field, then hit this button. If the item does not need translation just leave the text field
for translation empty and also hit this button which indicates the item is done and you continue with the next
item.
• The Goto Previous button, can be used to go to the previous translation item.
• The Goto Next button, can be used to go to the next translation item.
• The Next Todo button, jumps to the first translation item that still needs a translation. Handy when the
original document has changed and only several new/changed sentences need to be translated.
• The Previous Todo button, searches backward and jumps to the first translation item it finds that still
needs a translation.
For further information on the use of Qt Linguist, see https://doc-snapshots.qt.io/qt5-5.12/linguist-translators.html
Warning: If you want to download content to translate from the source repository, never do this in the
master branch. For translations there are always translation branches available, once a document is fully
updated in English for a certain version. As an example, to translate the manual of QGIS 2.8, you have to
use the manual_en_v2.8 branch.
First this core plugin needs to be activated using the Plugin Manager
(see Section :ref:`load_core_plugin`). After activation the heatmap icon
|heatmap| can be found in the Raster Toolbar.
In this case load_core_plugin is a unique reference identifier placed before an rst item that has a caption.
The ref statement will be replaced with the text of the header and turned into a hyperlink. When the header this
reference is referring to is translated, all references to this header will be automatically translated as well.
The next item contains the rst-tag :menuselection: followed by text actually displayed in a menu in QGIS
application, this may be translated in the application and therefore should be changed when this is the case.
In above item „View –>“ is actually translated to „Beeld –>“ because this is the translation used in the Dutch localized
QGIS application.
A bit further we meet the following tricky translation item:
The |heatmap| :sup:`Heatmap` tool button starts the Dialog of the Heatmap
plugin (see :numref:`figure_heatmap_settings`).
It holds a reference to a figure figure_heatmap_settings_, and like a reference to a section this reference
should not be changed!! The reference definition from the rst-document is not included in the .po file and can
therefore not be changed. This means the reference to figures can not be translated. When HTML is created you
will see figure_heatmap_settings. When a PDF document is created figure_heatmap_settings_
is replaced with a figure number.
The next translation item with rst attributes is the following item:
Do not remove the stars in above line. It will print the text it holds in bold. The text itself is often text included in
the dialog itself and may well be translated in the application.
The following translation item contains the :guilabel: rst tag.
The text Advanced of the guilabel tag may well be translated in the QGIS application and probably needs to be
changed!
The following translation item contains ``airports``. The quotes are used to give the text another text font. In this
case it is a literal value and does not need translation.
For the following example, we will use the ``airports`` vector point
layer from the QGIS sample dataset (see :ref:`label_sampledata`).
Another excellent QGIS tutorial on making heatmaps can be found on
`https://www.qgistutorials.com
<https://www.qgistutorials.com/en/docs/creating_heatmaps.html>`_.
This item also includes a hyperlink with an url and an external presentation. The url should of course be left intact,
you are allowed to change the external text https://www.qgistutorials.com which is visible by the
reader. Never remove the underscore at the end of the hyperlink which forms an essential part of it!!
1. Do not change text between two | characters like |bronze|, |checkbox|, |labels|,
|selectString|, |addLayer| … These are special tags used to replace images
2. Do not change references that start with roles like :ref:, :file:, :numref: unless they include a title.
In that case, you can translate the title but keep unchanged the link (i.e., the text between < and >)
Tip: When a title is provided for a reference, Transifex may display a number in the English source text in
replacement of the link part. Click on the number in the source text to add the reference link next to the title
being translated.
Substitutions
• Usage
• Common Substitutions
– Platform Icons
– Menu Items
• Toolbar Button Icons
– Manage Layers and overview
– File
– Редакция
– Identity result
– Digitizing and Advanced Digitizing
– Map Navigation and attributes
– Selection and Expressions
– Labels and Diagrams
– Decorations
– Помощ
– Цветове
• Other basic icons
• Атрибутивна таблица
• Projections and Georeferencer
• Print Layout
• Layer Properties
• Добавки
– Processing
39
QGIS Documentation Guidelines
5.1 Usage
To ease the use of icons in QGIS manuals, replacements are defined for each icon in /source/
substitutions.txt file at QGIS-Documentation repository and some of these substitutions are listed below.
Thus, when you want to use an icon from QGIS application in the documentation there is a big chance that there is
already a substitution that can/should be used.
If no replacement exists:
1. check the documentation repository whether the icon is available in /static/common folder. If no image,
then you need to find and copy the icon image file from QGIS repository (often under https://github.com/
qgis/QGIS/blob/release-3_16/images/themes/default folder) and paste (in .png format) under /static/
common folder. For convenience and update, it’s advised to keep filename when possible.
2. create the reference to the substitution in the /source/substitutions.txt file following the example
below. The replacement text should be in camelCase:
3. run the scripts/find_set_subst.py script to update the substitution definitions in the rst files and
include the new substitution(s).
4. (optional) add the reference to the icon and its substitution to the list below.
Below are given some icons and their substitution to use when writing documentation. Can be used/found in many
places in manuals.
40 Глава 5. Substitutions
QGIS Documentation Guidelines
|selectColor| |selectColorRamp|
|tab| ° |degrees|
|inputText| |slider|
|geoPackage| |spatialite|
|virtualLayer| |wms|
|wcs| |wfs|
|dbSchema|
|inOverview| |addAllToOverview|
|removeAllOVerview| |removeLayer|
|showAllLayers| |hideAllLayers|
|showMapTheme| |showSelectedLayers|
|hideSelectedLayers| |hideDeselectedLayers|
|toggleAllLayers| |toggleSelectedLayers|
|addLayer|
|indicatorTemporal| |indicatorNonRemovable|
|indicatorEmbedded| |indicatorFilter|
|indicatorMemory| |indicatorNoCRS|
|indicatorBadLayer| |favourites|
42 Глава 5. Substitutions
QGIS Documentation Guidelines
5.3.2 File
5.3.3 Редакция
|rotateFeature| |rotatePointSymbols|
|offsetCurve| |offsetPointSymbols|
|simplifyFeatures| |reshape|
|addRing| |addPart|
|fillRing|
|deleteRing| |deletePart|
|mergeFeatures| |mergeFeatAttributes|
|splitFeatures| |splitParts|
|reverseLine|
44 Глава 5. Substitutions
QGIS Documentation Guidelines
|selectAllTree| |select|
|formSelect| |dataDefined|
|expression| |dataDefineOn|
|dataDefineExpressionOn| |dataDefineError|
|dataDefineExpressionError|
|addExpression|
|expressionFilter| |filterMap|
5.3.9 Decorations
5.3.10 Помощ
46 Глава 5. Substitutions
QGIS Documentation Guidelines
5.3.11 Цветове
|browserExpand| |browserCollapse|
|codeEditor|
|conditionalFormatting| |multiEdit|
|dock| |actionRun|
|duplicateFeature|
|panTo| |highlightFeature|
|geographic| |crs|
|customProjection| |setProjection|
|projectionDisabled| |projectionEnabled|
|transformation|
|georefRun| |pencil|
|linkQGisToGeoref| |linkGeorefToQGis|
|fullHistogramStretch|
|newReport| |newPage|
|atlasSettings| |atlas|
|filePrint| |saveMapAsImage|
continues on next page
48 Глава 5. Substitutions
QGIS Documentation Guidelines
|select| |moveItemContent|
|setToCanvasScale| |setToCanvasExtent|
|viewScaleInCanvas| |viewExtentInCanvas|
|raiseItems| |lowerItems|
|moveItemsToTop| |moveItemsToBottom|
|alignLeft| |alignRight|
|alignHCenter| |alignVCenter|
|alignTop| |alignBottom|
|resizeShortest| |resizeTallest|
|resizeNarrowest| |resizeWidest|
|resizeSquare|
|lockItems| |unlockAll|
|locked| |unlocked|
|lockedRepeat| |lockedGray|
|groupItems|
|metadata| |action|
|display| |rendering|
|join| |diagram|
|labelmask| |temporal|
|legend| |dependencies|
|3d| |system|
|editMetadata| |overlay|
|digitizing| |auxiliaryStorage|
|history| |stylePreset|
|search| |pyramids|
|transparency| |rasterHistogram|
|singleSymbol| |nullSymbol|
|graduatedSymbol| |categorizedSymbol|
|25dSymbol| |ruleBasedSymbol|
|invertedSymbol| |heatmapSymbol|
|pointDisplacementSymbol| |pointClusterSymbol|
|meshcontours| |meshcontoursoff|
|meshvectors| |meshvectorsoff|
|meshframe|
|sum| |sort|
|paintEffects| |mapIdentification|
|styleManager| |iconView|
|joinNotEditable| |joinedLayerNotEditable|
|joinHasNotUpsertOnEdit| |filterTableFields|
|symbologyEdit|
|sharingImport| |sharingExport|
50 Глава 5. Substitutions
QGIS Documentation Guidelines
5.9 Добавки
5.9.1 Processing
Standard provided with basic install, but not loaded with initial install
5.9. Добавки 51
QGIS Documentation Guidelines
52 Глава 5. Substitutions