AnonSec Team
Server IP : 10.2.73.233  /  Your IP : 216.73.216.223
Web Server : Apache/2.4.59 (Debian)
System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : www-data ( 33)
PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/../../usr/share/javascript/../java/../python-support/../doc/python3/../systemd/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/../../usr/share/javascript/../java/../python-support/../doc/python3/../systemd/TRANSLATORS.md
---
title: Notes for Translators
---

# Notes for Translators

systemd depends on the `gettext` package for multilingual support.

You'll find the i18n files in the `po/` directory.

The build system (meson/ninja) can be used to generate a template (`*.pot`),
which can be used to create new translations.

It can also merge the template into the existing translations (`*.po`), to pick
up new strings in need of translation.

Finally, it is able to compile the translations (to `*.gmo` files), so that
they can be used by systemd software. (This step is also useful to confirm the
syntax of the `*.po` files is correct.)

## Creating a New Translation

To create a translation to a language not yet available, start by creating the
initial template:

```
$ ninja -C build/ systemd-pot
```

This will generate file `po/systemd.pot` in the source tree.

Then simply copy it to a new <code><i>${lang_code}</i>.po</code> file, where
<code><i>${lang_code}</i></code> is the two-letter code for a language
(possibly followed by a two-letter uppercase country code), according to the
ISO 639 standard.

In short:

<pre>
$ cp po/systemd.pot po/<i>${lang_code}</i>.po
</pre>

Then edit the new <code>po/<i>${lang_code}</i>.po</code> file (for example,
using the `poedit` GUI editor.)

## Updating an Existing Translation

Start by updating the `*.po` files from the latest template:

```
$ ninja -C build/ systemd-update-po
```

This will touch all the `*.po` files, so you'll want to pay attention when
creating a git commit from this change, to only include the one translation
you're actually updating.

Edit the `*.po` file, looking for empty translations and translations marked as
"fuzzy" (which means the merger found a similar message that needs to be
reviewed as it's expected not to match exactly.)

You can use any text editor to update the `*.po` files, but a good choice is
the `poedit` editor, a graphical application specifically designed for this
purpose.

Once you're done, create a git commit for the update of the `po/*.po` file you
touched. Remember to undo the changes to the other `*.po` files (for instance,
using `git checkout -- po/` after you commit the changes you do want to keep.)

# Recompiling Translations

You can recompile the `*.po` files using the following command:

```
$ ninja -C build/ systemd-gmo
```

The resulting files will be saved in the `build/po/` directory.

AnonSec - 2021