---
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 proces.

    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
$ ninja 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
$ ninja intltest-update-po
```
