I just want to sanity-check my brain here.

LINGUAS seems to be mainly a variable to control the behavior of
gettext's autoconf code, installed as /usr/share/aclocal/po.m4.

If LINGUAS is set to a list of language codes, the build system will
only build/install MO files for those languages. If LINGUAS is unset,
the build system will build/install MO files for all available
languages.

Portage will also use-expand LINGUAS, so an ebuild *can* make use of
it where USE flags are needed. For example, in SRC_URI, where the USE
flags may be used to control downloading of extra language packs.

Given this information, I come to a few conclusions:

1. There is technically no need to define IUSE="linguas_$x" if an
ebuild is not using the USE flags in other ebuild metadata (like
SRC_URI).

2. In cases where the USE flags are needed, they should be enabled by
default to emulate the "default-all" behavior of the autoconf macros.
For example: IUSE="+linguas_fr_FR +linguas_de_DE".

3. An ebuild could use LINGUAS to control installation of translation
information which does not come from gettext PO files. It does not
necessarily need to make use of the linguas_$x USE flags to do so.

Does all of that make sense?

I am considering simplifying www-client/chromium from the current mess
based on the linguas USE flags to basically just this:

if [[ ${LINGUAS} ]]; then
  for x in *.pak; do
    mylang=${x%.pak}
    mylang=%{x/-/_}
    has $mylang $LINGUAS || rm $x
  done
fi

As well, there are probably a few other places in the tree where
conclusion #1 and #2 should be applied.

Reply via email to