Ekaterina Gerasimova
kittykat3756@gmail.com 2013
Fran Diéguez
frandieguez@gnome.org 2009-2020.
Leandro Regueiro
leandro.regueiro@gmail.com 2011.

# Set up your build system for translation

# Set up translations

You will need to set up your project and build system to work with translations.

Create a po/ subdirectory in your project directory and list the files which have translatable strings in po/POTFILES.in. List files without translatable strings in po/POTFILES.skip.

Add the following lines to your configure.ac:

IT_PROG_INTLTOOL([0.50.0]) AC_SUBST([GETTEXT_PACKAGE], [$PACKAGE_TARNAME]) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Package name for gettext])

Add the following lines to your Makefile.am:

SUBDIRS = po
AM_CPPFLAGS = -DPACKAGE_LOCALEDIR=\""$(datadir)/locale"\"
@INTLTOOL_DESKTOP_RULE@ desktopdir = $(datadir)/applications desktop_in_files = data/applicationname.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)

Run intltoolize to copy the intltool build infrastructure to the build tree before running autoreconf.

Now that your build system and your source strings are ready for translation, you need to tell gettext three things:

the translation domain, generally the same as the application name

the location where the built translations are installed

the character encoding of the translations, generally UTF-8

This example assumes that your application is written in C. It will be slightly different for other programming languages.

Add the following line to the source file which contains your `main()` function:

#include "config.h"

Then, add the following lines to your `main()` function:

bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALEDIR); bind_textdomain_codeset (PACKAGE_TARNAME, "UTF-8"); textdomain (GETTEXT_PACKAGE);

Run make projectname.pot in the po directory. This runs intltool-extract to extract the translatable strings and put them in a po template (POT) file.