aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <tingping@tingping.se>2016-12-03 00:19:47 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2016-12-03 21:01:48 +0200
commitacb0a38aac544125a1dd75bb4233b31e9f3fd7df (patch)
treec9e23addd9833d0eb3fa9dd2bb660dc0abff0c3e
parent7d68715297a611f50b256acf5358597ee037eb5d (diff)
downloadmeson-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.py34
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