Contribute
We are happy to see you contribute to Zammad! You can do this in several ways. Contributions are mainly done by forking one of our repos on GitHub and creating a pull request with your changes (except for translations, see below). 🚀
You can contribute to:
Please have a look on our notes on how to contribute below.
All repos can be found on Github.
Zammad Source Code
The Zammad source code can be found on GitHub in the Zammad repository.
Have a look at the developer manual to get started.
Supported Branches / Versions
The main Zammad repository at Github has several branches.
develop
- This is the current (unreleased) development state of next major release (this will become the new
stable
branch). - Don't use it for production!
- Supported with bug and security fixes - see also our Security Policy.
stable
- This is the current stable release, e.g. Zammad 5.2.
- Use this branch for production installations.
- Supported with bug and security fixes - see also our Security Policy.
stable-x.y
- These are the branches of old versions of Zammad like
stable-5.1
for Zammad 5.1. - No support for bug or security issues is provided.
Documentation
Do you want to contribute to the Zammad documentation?
Open a new GitHub pull request at
- https://github.com/zammad/zammad-org (the documentation you are currently reading)
- https://github.com/zammad/zammad-documentation (legacy)
- https://github.com/zammad/zammad-admin-documentation (legacy)
- https://github.com/zammad/zammad-user-documentation (legacy)
with your changes.
The legacy documentation is hosted on Read the Docs. You can find it under:
The documentation you are reading is available on next.zammad.org and zammad.org and is built via Vitepress. The source files are written in Markdown. Make sure to change the English source files only which are placed under /src/en/
. The translations are made via Weblate and will overwrite any changes in the language specific folders (except /src/eng/
).
ReStructuredText markup
If you like to edit the docs, use the ReStructuredText markup language. Information about this language can be found at:
- http://www.sphinx-doc.org/en/stable/rest.html
- http://docutils.sourceforge.net/docs/user/rst/quickref.html
- http://docs.readthedocs.io/en/latest/_themes/sphinx_rtd_theme/demo_docs/source/demo.html
Thanks! ❤ ❤ ❤
Zammad Team
Translation
If you want to help us with translation and improve the multi-language support of Zammad and/or the documentation, you are welcome to contribute as well! The translation of Zammad itself and the documentation is done by using Weblate, which is a service for the collaborative translation of projects.
You just have to head over to Zammad's Weblate instance. You can either create an account (if you don't have one already) or even sign in with your Github account!
We will cover some basic steps in the following sections to get you started with translating. However, if you want to use some additional features of Weblate and want to dive deeper into it, their translation documentation is a good starting point.
Basics
The translation of Zammad and the translation of the documentation are split into two projects in Weblate. When you click in the top menu under "Projects > Browse all projects", you can find the overview of the two projects:
Structure of translation projects in Weblate:
- Documentation
- User Documentation (
latest
) - User Documentation (
pre-release
) - Admin Documentation (
latest
) - Admin Documentation (
pre-release
)
- User Documentation (
- Zammad
- Zammad (
develop
, development version) - Zammad (
stable
version) - Some more which aren't relevant here
- Zammad (
TIP
It is no big difference which branch you choose to translate. When Weblate detects the same strings in different branches, they will be used for all branches and only have to be translated once.
After selecting a project (Documentation or Zammad), you will see different sub-projects and their translation status summarized for all languages. These overviews may show a quite low translation rate, which is due to the amount of active languages.
Here you can select one of the "components", which is more or less the same as different versions. After selecting one of them, you can see the status of translation for the different languages, as you can see in the following screenshot with an example from Documentation > User Documentation (latest):
Translating
After selecting your language you want to translate to, a good starting point is to select "Untranslated strings" (or the same meaning in your language, depending on what you have set in your profile).
After that, you will finally see the first untranslated string in the upper field and, in theory, you can start to translate. First a brief overview of the user interface of Weblate:
- Breadcrumbs with path to the current project and language
- Translation area itself. You can find the source string ("English (United States)") at the top and the field for your translation ("French" in this example).
- Glossary: here you can find common translations in Zammad context. The terms from the glossary are highlighted in the source strings, as well.
- Some useful tabs:
- Nearby strings: shows you the context of the word or string
- Automatic suggestions: here you can find automatic suggestions from DeepL and suggestions from similar strings, which are already translated. Use the "Clone to translation" button to insert it in the translation field to apply changes. Use the "Accept" button to accept the suggested translation and automatically switch to the next string.
- Other languages: here you can get an overview, which languages are translated and you can also see the translated strings (could be useful for languages, which are similar).
Troubleshooting
And finally some notes for "special" source strings, you might see in the documentation projects (see RestructuredText_ for details):
``example-string``
This is rendered as
example-string
. Depending on the context, it can be translated or not. In any case, use the `` before and after the string in your translation.:doc:`example <path/to/document>`
This is a link to another page. Some links doesn't have the "example" part included, e.g. :doc:`path/to/document. The above "example" is the text, which is shown as link. This part can be translated. The path/to/document may not be translated, otherwise the link would not work anymore.
`some text <https://example.com>`_
This is a link which can refer to an external website. "some text" is the displayed text in the documentation, the part between < and > is the link target. The _ at the end is important and must remain in the translated text.
:admin-docs:`some text </manage-text-modules.html>`
This is a link which refers to external documentation. "some text" is the displayed text in the documentation, the part between < and > is the link target. Note the absence of _ at the end, since this link is using a different construction mechanism.
**example string**
Markup for text (e.g. bold, italics). Alternative: *example string*. These strings can be translated, but the markup labeling (e.g. one or more *) should be adopted true to meaning.