---
short-description: Localization with GNU Gettext
...

# Localisation

Localising your application with GNU gettext takes a little effort but
is quite straightforward. We'll create a `po` subdirectory at your
project root directory for all the localisation info.

## Generating .pot and .po files

In your main meson.build file include the `po` subdirectory in the build process.

    subdir('po')

In this `po` subdirectory we need:
- `LINGUAS`: Space separated list of languages
- `POTFILES`: List of source files to scan for translatable strings.
- `meson.build`: Localization specific Meson file

### LINGUAS

File with space separated list of languages. A sample LINGUAS might look like this.

    aa ab ae af

### POTFILES

File that lists all the source files that gettext should scan in order
to find strings to translate. The syntax of the file is one line per
source file and the line must contain the relative path from source
root. A sample POTFILES might look like this.

    src/file1.c
    src/file2.c
    src/subdir/file3.c
    include/mything/somefile.h

### meson.build

Localization specific Meson file. It imports and uses the `i18n`
module. If not defined before it needs to define the `GETTEXT_PACKAGE`
global.

```meson
i18n = import('i18n')
# define GETTEXT_PACKAGE
add_project_arguments('-DGETTEXT_PACKAGE="intltest"', language:'c')
i18n.gettext(meson.project_name(),
    args: '--directory=' + meson.source_root()
)
```

The first command imports the `i18n` module that provides gettext
features. The fourth line does the actual invocation. The first
argument is the gettext package name. This causes two things to
happen. The first is that Meson will generate binary mo files and put
them to their proper locations when doing an install. The second is
that it creates a build rule to regenerate the main pot file. If you
are using the Ninja backend, this is how you would invoke the rebuild.

### generate .pot file

Then we need to generate the main pot file. The potfile can have any
name but is usually the name of the gettext package. Let's say the
project is called *intltest*. In this case the corresponding pot file
would be called `intltest.pot`.

Run the following command from your build folder to generate the pot
file. It is recommended to inspect it manually afterwards and fill in
e.g. proper copyright and contact information.

```console
$ meson compile intltest-pot
```

### generate .po files

For each language listed in the array above we need a corresponding
`.po` file. Those can be generated by running the following command
from your build folder.

```console
$ meson compile intltest-update-po
```
