diff options
author | Patrick Griffis <tingping@tingping.se> | 2016-12-03 00:19:47 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-12-03 21:01:48 +0200 |
commit | acb0a38aac544125a1dd75bb4233b31e9f3fd7df (patch) | |
tree | c9e23addd9833d0eb3fa9dd2bb660dc0abff0c3e | |
parent | 7d68715297a611f50b256acf5358597ee037eb5d (diff) | |
download | meson-acb0a38aac544125a1dd75bb4233b31e9f3fd7df.zip meson-acb0a38aac544125a1dd75bb4233b31e9f3fd7df.tar.gz meson-acb0a38aac544125a1dd75bb4233b31e9f3fd7df.tar.bz2 |
i18n: Add preset kwarg
Many frameworks, such as glib, provide translation functions and
functions that take format strings. As such every application using
these must duplicate the gettext arguments to function properly.
This reduces that duplication and improves correctness so they are
not left out.
Fixes #1123
-rw-r--r-- | mesonbuild/modules/i18n.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 838749b..13394c1 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -17,6 +17,32 @@ from .. import coredata, mesonlib, build from ..mesonlib import MesonException import sys +PRESET_ARGS = { + 'glib': [ + '--from-code=UTF-8', + '--add-comments', + + # https://developer.gnome.org/glib/stable/glib-I18N.html + '--keyword=_', + '--keyword=N_', + '--keyword=C_:1c,2', + '--keyword=NC_:1c,2', + '--keyword=g_dcgettext:2', + '--keyword=g_dngettext:2,3', + '--keyword=g_dpgettext2:2c,3', + + '--flag=N_:1:pass-c-format', + '--flag=C_:2:pass-c-format', + '--flag=NC_:2:pass-c-format', + '--flag=g_dngettext:2:pass-c-format', + '--flag=g_strdup_printf:1:c-format', + '--flag=g_string_printf:2:c-format', + '--flag=g_string_append_printf:2:c-format', + '--flag=g_error_new:3:c-format', + '--flag=g_set_error:4:c-format', + ] +} + class I18nModule: def merge_file(self, state, args, kwargs): @@ -53,6 +79,14 @@ class I18nModule: datadirs = mesonlib.stringlistify(kwargs.get('data_dirs', [])) extra_args = mesonlib.stringlistify(kwargs.get('args', [])) + preset = kwargs.pop('preset', None) + if preset: + preset_args = PRESET_ARGS.get(preset) + if not preset_args: + raise coredata.MesonException('i18n: Preset "{}" is not one of the valid options: {}'.format( + preset, list(PRESET_ARGS.keys()))) + extra_args = set(preset_args + extra_args) + pkg_arg = '--pkgname=' + packagename lang_arg = '--langs=' + '@@'.join(languages) datadirs = '--datadirs=' + ':'.join(datadirs) if datadirs else None |