On 08/19/07 15:45, Ludwig Nussel wrote: > Klaus Schmidinger wrote: >> On 08/19/07 12:43, Anssi Hannula wrote: >>> Anssi Hannula wrote: >>> It seems that it *does* work, i.e. LANGUAGE=de, LANGUAGE=fr, LANGUAGE=fi >>> will work even if there is no such locale at all. >>> >>> I copied a .mo file into /usr/share/locale/testtest/LC_MESSAGES/, which >>> certainly is not a valid locale, and using LANGUAGE=testtest it was >>> correctly used! :) >> Looks good. However, after some tests it would appear as if only the >> very first setenv() call actually changes anything. Subsequent calls >> have no further effect, and gettext() always returns the language >> that was selected in the very first call to setenv(). > > The gettext info page says: > > But there is one little hook. The code for gcc-2.7.0 and up > provides some optimization. This optimization normally prevents > the calling of the `dcgettext' function as long as no new catalog > is loaded. But if `dcgettext' is not called the program also > cannot find the `LANGUAGE' variable be changed (*note Optimized > gettext::). A solution for this is very easy. Include the > following code in the language switching function. > > /* Change language. */ > setenv ("LANGUAGE", "fr", 1); > > /* Make change known. */ > { > extern int _nl_msg_cat_cntr; > ++_nl_msg_cat_cntr; > } Great! This works well! Klaus _______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr