Menu item "Gtk-CRITICAL" messages

Jon Lapham lapham at
Sat May 31 11:20:21 CDT 2003

Okay, I still trying to track down those damn Gtk-CRITICAL messages that 
spew forth because some menu items are translated differently in 
gnucash/po/X.po verses various other gnome libs.

What follows is the step-by-step approach to doint this.  I hope to add 
this to the TRANSLATIONS-HOWTO document I'm working on for gnucash, so 
comments are welcome.

Question #1:  I think there must be another library besides libgnome and 
libgnomeui that we have to worry about.  Why?  Because, when I run 
"LANG=pt_BR gnucash" the "_View" menu appears as "_Visualizar". 
However, it is translated in both my gnucash po file and libgnomeui as 
"_Ver" (it doesn't exist in libgnome).  Where is it coming from?

Question #2: Is there a simple way to simply re-install a language file 
after making a modification to a po file?  Or, do we have to go through 
the whole "make install" process after a minor language translation 

Question #3: What *version* of the libgnome and libgnomeui libraries 
should we be looking into?  I guess it must be the version that exists 
on the system under which gnucash is being run.  So, in my case, for 
RedHat v9, that mean I should use v2.2 of libgnome and libgnomeui.  What 
if these library file translations changed somewhat in v2.3?  Or v2.1?



1) Start with a clean copy of the 1.8 gnucash source (fresh CVS or make 

2) Recompile/install with debug-ing activated (./ 
--enable-debug; make; make install)

3)  for problems by running gnucash in English (LANG=en_US gnucash) 
followed by running in your language (LANG=pt_BR gnucash).  Look for 
warning messages which only appear when running under your language.

4) If there is a problem, restart gnucash under gdb under your language 
(LANG=pt_BR gnucash-env gdb /usr/bin/guile) followed by (run -e main -s 
/usr/local/libexec/gnucash/overrides/gnucash --g-fatal-warnings) from 
within gdb.  After gnucash crashes, type 'backtrace' in the gdb 
interface, you should see something similar to this:

#0  0xffffe002 in ?? ()
#1  0x42028a73 in abort () from /lib/tls/
#2  0x4019d3d8 in g_logv () from /usr/lib/
#3  0x4019d414 in g_log () from /usr/lib/
#4  0x40500fdd in gtk_type_check_object_cast () from 
#5  0x407292e5 in gnc_mdi_tweak_menus (mc=0x825adb0) at gnc-mdi-utils.c:574
#6  0x40729d13 in gnc_mdi_child_changed_cb (mdi=0x8266fd8, prev_child=0x0,
     data=0x8265fd8) at gnc-mdi-utils.c:861

Notice position #5 which has "gnc_mdi_tweak_menus at 
gnc-mdi-utils.c:574"?  Open that source file and find line 574:

573:  widget = gnc_mdi_child_find_menu_item(mc, "_View/_Toolbar");
574:  gtk_signal_handler_block_by_data(GTK_OBJECT(widget), info);

So, the problem is with the translation of "_View/_Toolbar".

5) Download your language translations for the libgnome and libgnomeui 
packages installed on your system.  These can be found in the 
appropriate tarballs on in the /pub/gnome/sources/ 
directory.  Also, you can access the files through LXR like this:

(then enter libgnome/po/ or libgnomeui/po/)

6) Find how libgnome or libgnomeui translated that menu item, and change 
your translation in gnucash to be identical.

7) Return to step #1.  Wash, rinse, repeat.

  Jon Lapham  <lapham at>          Rio de Janeiro, Brasil
  Work: Extracta Moléculas Naturais SA

More information about the gnucash-devel mailing list