Re: Problem with locale on Win32



Tor Lillqvist wrote:

Andrew E. Makeev writes:
> The problem is when you call standart popup menu on GtkEntry, > GtkTextView for example, it is appearing in user locale only once, next > time you see all menuitems in English.

Have never seen this. Could not reproduce. Please reproduce with a
minimal but complete test program. Please use at least GTK+ 2.6, 2.4
is not maintained any longer.

(Well, 2.6 is not maintained either, but it's still widely distributed
and used on Win32. If this really is a bug in GTK+, the fix will go in
2.8 and HEAD only, though.)

If the problem still occurs in a minimal test program, open a bug
report on bugzilla.gnome.org and attach the test program's source
code. If the problem does not appear in a minimal test program, it
can't be in GTK+, can it?

We have debugged the program and found the following in module gtkimmulticontext.c file:

...
void
gtk_im_multicontext_append_menuitems (GtkIMMulticontext *context,
                                     GtkMenuShell      *menushell)
{
 const GtkIMContextInfo **contexts;
 guint n_contexts, i;
 GSList *group = NULL;

 _gtk_im_module_list (&contexts, &n_contexts);

 for (i=0; i < n_contexts; i++)
   {
     GtkWidget *menuitem;
     const gchar *translated_name;
#ifdef ENABLE_NLS
     if (contexts[i]->domain && contexts[i]->domain_dirname &&
         contexts[i]->domain[0] && contexts[i]->domain_dirname[0])
       {
         if (strcmp (contexts[i]->domain, GETTEXT_PACKAGE) == 0 &&

/**************
* GTK_LOCALEDIR returns "/usr/local/share/locale" on Win32 machine
* when condition below is commented out, popup menu works fine
**************/

             strcmp (contexts[i]->domain_dirname, GTK_LOCALEDIR) == 0)
         /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */
           /* Input method may have a name in the GTK+ message catalog */
           translated_name = _(contexts[i]->context_name);
         else
           /* Input method has own message catalog */
           {
             bindtextdomain (contexts[i]->domain,
                             contexts[i]->domain_dirname);
#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
             bind_textdomain_codeset (contexts[i]->domain, "UTF-8");
#endif
...

As I've discovered, that GTK_LOCALEDIR tries to get installation path by GETTEXT_PACKAGE define. Probably, the problem is here, because we have built gettext dll on one machine, then copy dll in some directory on other machine. I couldn't find the way g_win32_get_package_installation_subdirectory() function works, so, can't be sure about it.

Is it possible to solve this issue using some configuration settings?

Regards,
-andrew




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]