This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Runtime interface language switching


Hi!

Some programs offer a selection of the used interface language at runtime.

Unfortunately I don't see how that should be implemented properly so that it works independently from the user's environment with current glibc.

This gettext manual section:
http://www.gnu.org/software/gettext/manual/gettext.html#gettext-grok
advises re-setting the LANGUAGE environment variable to the wanted language. However, that section is marked as "outdated", and indeed it does not work properly anymore.


This is because this change in 2001-01-02:
        * intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE
        value is ignored if the selected locale is the C locale.

So, if the environment locale variables happen to be C (or equivalent such as POSIX or invalid locale), the LANGUAGE variable is ignored, thus making it not possible to switch language using it.


Just using setlocale() instead or in addition of LANGUAGE variable is not possible, since the program cannot really guess what locales are actually installed in the system (i.e. listed by "locale -a").
You cannot setlocale() to an unexistent locale, but you can use the LANGUAGE variable to set glibc to use the translation from the .mo files anyway (that is, if locale is not C).


We encountered this problem with the VDR project (GPL set-top-box style software).

--
Anssi Hannula


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]