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@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to