From 2fc7592e13a4680aa481dfd0859a6591d0f92e74 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Thu, 26 Aug 2021 17:47:57 -0400 Subject: i18n module: provide targets as return value for gettext() Users may wish to make use of these files for their own purposes. For example, the -pot and -update-po pseudo targets could be reused in an alias_target(), and at least one person wanted to reuse the built .mo files as custom_target input. Fixes #6227 --- docs/markdown/i18n-module.md | 5 +++++ docs/markdown/snippets/i18n-return.md | 6 ++++++ mesonbuild/modules/i18n.py | 4 +++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 docs/markdown/snippets/i18n-return.md diff --git a/docs/markdown/i18n-module.md b/docs/markdown/i18n-module.md index 4948fab..47ef88b 100644 --- a/docs/markdown/i18n-module.md +++ b/docs/markdown/i18n-module.md @@ -38,6 +38,11 @@ This function also defines targets for maintainers to use: * `-update-po`: regenerates the `.po` files from current `.pot` file * `-gmo`: builds the translations without installing +(*since 0.60.0*) Returns a list containing: +* a list of built `.mo` files +* the maintainer `-pot` target +* the maintainer `-update-po` target + ### i18n.merge_file() This merges translations into a text file using `msgfmt`. See diff --git a/docs/markdown/snippets/i18n-return.md b/docs/markdown/snippets/i18n-return.md new file mode 100644 index 0000000..1f732af --- /dev/null +++ b/docs/markdown/snippets/i18n-return.md @@ -0,0 +1,6 @@ +## i18n module now returns gettext targets + +`r = i18n.gettext('mydomain')` will now provide access to: +- a list of built .mo files +- the mydomain-pot maintainer target which updates .pot files +- the mydomain-update-po maintainer target which updates .po files diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 539f82b..de86195 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -143,6 +143,7 @@ class I18nModule(ExtensionModule): datadirs = self._get_data_dirs(state, mesonlib.stringlistify(kwargs.get('data_dirs', []))) extra_args = mesonlib.stringlistify(kwargs.get('args', [])) targets = [] + gmotargets = [] preset = kwargs.pop('preset', None) if preset: @@ -185,6 +186,7 @@ class I18nModule(ExtensionModule): } gmotarget = build.CustomTarget(l+'.mo', path.join(state.subdir, l, 'LC_MESSAGES'), state.subproject, gmo_kwargs) targets.append(gmotarget) + gmotargets.append(gmotarget) updatepoargs = state.environment.get_build_command() + ['--internal', 'gettext', 'update_po', pkg_arg] if lang_arg: @@ -196,7 +198,7 @@ class I18nModule(ExtensionModule): updatepotarget = build.RunTarget(packagename + '-update-po', updatepoargs, [], state.subdir, state.subproject) targets.append(updatepotarget) - return ModuleReturnValue(None, targets) + return ModuleReturnValue([gmotargets, pottarget, updatepotarget], targets) def initialize(*args, **kwargs): return I18nModule(*args, **kwargs) -- cgit v1.1